删除cstringarray*时崩溃

Crash when deleting CStringArray*

本文关键字:崩溃 cstringarray 删除      更新时间:2023-10-16

我是C 世界中的菜鸟,我面临着一种怪异的行为。我使用Visual Studio2010。

上下文:我决定将wxwidget用于GUI。

为此,我必须在项目属性中更改以下设置:

c/c > 代码生成> Runtime Library > /mtd (以前是/MDD)

常规> 使用MFC > 在共享DLL 中使用MFC(以前是在静态库中使用MFC)

由于这些更改,我在CStringArray*上的所有delete[]都崩溃了我的应用。我尝试通过delete更改delete[],但会导致巨大的内存泄漏。

我不明白为什么这些项目设置的变化会产生这种行为差异。

编辑:

输出消息是:

heap [xxx.exe]:指定至rtlvalidateheap的无效地址(002B0000, 002BDE54)Windows在xxx.exe中触发了一个断点。

这可能是由于堆的损坏,这表明在 xxx.exe或已加载的任何DLL。

这也可能是由于用户按F12而造成的,而xxx.exe则焦点。

我已经读过:

CRT库对新,删除和 dllmain功能。MFC库还包含新的,删除和 dllmain功能。这些功能要求MFC库为 在链接CRT库之前链接。

因此,我尝试添加属性> 配置属性> 链接器>> input >>> 忽略特定默认库 nafxcwd.lib; libcmtd.lib;

没有更改。

在呼叫堆栈中,我看到它是调用的cstringarray :: vector删除destructor。

所以,我放弃了。我在这个问题上留了很多时间。我认为当我删除指针时存在一个潜在的问题。

我要尝试QT ...