C ++使用MSVC ++ 2005在Windows上的内存问题和诊断

我用一个不太有用的诊断信息来追踪内存错误:

HEAP[myprogram_run.exe]: HEAP: Free Heap block e0969b0 modified at e096a70 after it was freed Windows has triggered a breakpoint in myprogram_run.exe. This may be due to a corruption of the heap, and indicates a bug in myprogram_run.exe or any of the DLLs it has loaded. The output window may have more diagnostic information The program '[9340] myprogram_run.exe: Native' has exited with code -1 (0xffffffff). 

环顾四周后,我在这些MSDN链接中find: http : //msdn.microsoft.com/en-US/library/e5ewb1h3%28v=vs.80%29我将我的项目属性预处理器定义(在C / C ++下)设置为包括_DEBUG和我的主要function,我也推荐以下顺序添加以下(在上面的链接):

 #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> ... int main(..,..) { ... _CrtDumpMemoryLeaks(); return retval; } 

但是在Visual Studio解决scheme的“输出”窗口中,我还没有看到广告的诊断输出(包括行号等)? 感谢任何有关如何正确诊断这个问题的见解。 谢谢!

我可以在“项目属性”下进行设置

你确定你的代码在崩溃前正在达到_CrtDumpMemoryLeaks调用吗? 我的猜测是你的代码崩溃试图释放一些已经释放的内存之前,有机会报告任何可能的内存泄漏。

查看Microsoft示例以获取有关如何使用调试功能的更多线索。