删除cstringarray*时崩溃
Crash when deleting CStringArray*
我是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 ...
- 当回溯以零开始时,如何调试崩溃
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- CoInitialize()在单独的线程上崩溃而不返回
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 为什么我的多线程作业队列崩溃
- ExtractIconEx:可以工作,但偶尔会崩溃
- 为什么引用传递会导致此崩溃(C++)
- 试图创建流或fopen时程序崩溃
- 类对象数组的问题会导致崩溃
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 为什么要增加导致崩溃的指针
- 在虚幻引擎中删除NXOpen对象时崩溃
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Visual Studio在尝试读取resource.txt文件时崩溃
- 删除cstringarray*时崩溃