Visual studio 2008 仅在发布模式下映射垃圾字符
我有一个std::map作为函数的参数,在调试模式VS2008中,map有正确的键和值,但是当我在版本中启动程序时,map中有一些糟糕的字符 代码转储:Visual studio 2008 仅在发布模式下映射垃圾字符,visual-studio-2008,mfc,map,release,cstring,Visual Studio 2008,Mfc,Map,Release,Cstring,我有一个std::map作为函数的参数,在调试模式VS2008中,map有正确的键和值,但是当我在版本中启动程序时,map中有一些糟糕的字符 代码转储: std::map<CString, CString> libVersions; ... // fill values utilFunctions->Function(&libVersions)) bool UtilityFunctions::Function(std::map<
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++)
{
...
}
...
}
你知道为什么这段代码在发布模式下不起作用吗
感谢并问候我的猜测是,在发行版中,您仍然使用调试CRT进行编译,并且没有定义调试,反之亦然。您可以发布填充映射的代码吗?这就是有趣的部分:如果可能的话,切换到std::string而不是CString,使用引用而不是指针。映射中的字符串看起来是完全错误的还是只有几个额外的字符?键和值都错了吗?嗨!运行库设置为/MT,生成调试信息为否!处于调试模式/MTd和/Debug!在地图上所有的字符都是蹩脚的,不仅仅是单个字符不同!还有其他想法吗!问候leon22@leon22:您在发行版中设置了什么定义?它在C/C++->预处理器Win32下运行;恩德布格_窗户_VC80_升级=0x0600_MBCS$发布版和WIN32中的NOINHERIT_调试_调试中的WINDOWS!问候leon22@leon22:嗯。。。那就破坏了这个想法: