删除CStringArray时崩溃*

时间:2014-01-30 16:17:03

标签: c++ visual-studio-2010 mfc

我是C ++世界的诺布,我面临一种奇怪的行为。我使用Visual Studio 2010。

上下文:我决定使用wxWidget进行GUI。

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

C / C ++ > 代码生成> 运行时库> / MTd (以前是/ MDd)

一般> 使用MFC > 在共享DLL中使用MFC (以前在静态库中使用MFC)

自从这些更改后,我delete[]上的所有CStringArray*都会崩溃我的应用。 我尝试将delete[]更改为delete,但这会导致巨大的内存泄漏。

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

编辑:

输出消息为:

  

HEAP [xxx.exe]:为RtlValidateHeap指定的地址无效(002B0000,   002BDE54)Windows在xxx.exe中触发了断点。

     

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

     

这也可能是由于用户在xxx.exe有焦点时按下F12。

我看过that

  

CRT库使用弱外部链接进行new,delete和   DllMain功能。 MFC库还包含new,delete和   DllMain功能。这些函数需要MFC库   在CRT库链接之前链接。

所以我尝试添加属性> 配置属性> 链接器> 输入> 忽略特定默认库 nafxcwd.lib; libcmtd.lib;

没有变化。

在调用堆栈中,我看到它是CStringArray :: vector删除了被调用的析构函数。

1 个答案:

答案 0 :(得分:0)

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

我要试试Qt ......