std::map 糟糕的字符仅在发布模式下
Posted
技术标签:
【中文标题】std::map 糟糕的字符仅在发布模式下【英文标题】:std::map crappy chars only in release mode 【发布时间】:2010-12-14 16:28:16 【问题描述】:我有一个 std::map 作为函数的参数,并且在调试模式 (VS2008) 中,映射具有正确的键和值,但是当我在 Release 中启动程序时,映射中有糟糕的字符!
代码转储:
std::map<CString, CString> libVersions;
... // fill values
utilFunctions->Function(&libVersions))
bool UtilityFunctions::Function(std::map<CString,CString> *dllMapData)
...
map<CString,CString>::iterator it;
for(it=dllMapData->begin(); it!=dllMapData->end(); it++)
...
...
任何想法为什么此代码在发布模式下不起作用???
感谢和问候
【问题讨论】:
你能贴出填充地图的代码吗?这是有趣的部分:) 尽可能切换到std::string
而不是CString
,使用引用而不是指针。
地图中的字符串看起来完全错误还是只有几个额外的字符?键和值都错了吗?
【参考方案1】:
我的猜测是,在发布时,您仍在针对调试 CRT 进行编译,并且没有定义 _DEBUG(反之亦然)。
【讨论】:
嗨!运行时库设置为 /MT 并且生成调试信息为否!在调试模式 /MTd 和 /DEBUG!在地图中,所有字符都很糟糕(不仅单个字符不同)!任何其他想法!迎接 leon22 @leon22:你在发布时有什么定义? (它在 C/C++->预处理器下) WIN32;NDEBUG;_WINDOWS;_VC80_UPGRADE=0x0600;_MBCS;$(NOINHERIT) 在发布和 WIN32;_DEBUG;_WINDOWS 在调试!迎接 leon22 @leon22: 嗯……那就毁了那个主意:(以上是关于std::map 糟糕的字符仅在发布模式下的主要内容,如果未能解决你的问题,请参考以下文章