gpt4 book ai didi

c++ - MFC: wide char-based CMap 使程序崩溃

转载 作者:行者123 更新时间:2023-11-28 06:06:40 26 4
gpt4 key购买 nike

有一个关于非常简单但显然复杂得令人难以置信的问题 - 来自 MFC 的自定义数据 CMap。

typedef CMap<PWCHAR,PWCHAR,PWCHAR,PWCHAR> TMyMap;
TMyMap m;
// the following causes a crash once "m" gets out of scope
m[L"xxx"]=L"yyy";
// the following causes a crash immediately (which is probably reasonable)
m[NULL]=NULL;

将 VS2010Express 与遗留 MFC6 结合使用(即,这种致命的组合不允许我跟踪 MFC 源代码,因此我为乍一看可能非常不必要的问题道歉)。

非常感谢您的回复。

托马斯

最佳答案

因此,您使用 VC-Express 2010 编译代码并链接到来自 VC6 的 MFC 库,所有这些都使用共享 DLL 中的 MFC。

可能是你的EXE代码链接到VC 2010的CRT运行时,其中VC6 MFC的DLL代码会使用VC6运行时CRT DLL。

所以 new/malloc/delete/free 在 MFC 代码中执行,您的代码将始终针对不同的堆,这肯定会崩溃。

只需检查 Depends what CRT DLL is loaded by your program 和 what CRT is used by VC6.

只要进入汇编代码并调试它,看看涉及到哪些模块。

关于c++ - MFC: wide char-based CMap 使程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com