RtlValidateHeap错误:new []需要删除[],但DEBUG_NEW需要在VC ++ 2013 express中删除

时间:2014-10-27 06:07:15

标签: c++ visual-c++ visual-studio-2013 mfc visual-studio-express

我正在尝试从VC ++ 2013 Express中使用VC ++ 6中的旧代码。跳过许多箍以使用MFC与Visual Studio 2013 Express(下载旧版本的WDK / DDK来获取MFC,修复头文件中的错误等)我有它编译,但我得到一个“指定给RtlValidateHeap的无效地址”错误运行

原来这是由于“删除”和“删除[]”之间的混淆。较早版本的VC ++似乎并不介意删除数组的方法,但VS2013确实如此。但更糟糕的是,如果您使用DEBUG_NEW,即“#define new DEBUG_NEW”接近您的C ++文件的开头,那么它会切换您需要使用的删除!

对我来说,当不使用DEBUG_NEW时,new []必须与delete []匹配,但在使用DEBUG_NEW时必须使用delete(不带[])!如果没有,我再次收到运行时错误。

这是因为旧版本的MFC使用了旧版本的DEBUG_NEW吗? Express版本不提供MFC,因此我不能简单地使用新版本。

如何使用DEBUG_NEW并仍然将new []与delete []匹配(根据DEBUG_NEW未激活时的要求)?

谢谢, 罗布。

0 个答案:

没有答案