我正在尝试使用 CRT 内存泄漏检测,但在 Microsoft Visual Studio 中不断收到以下消息:“检测到内存泄漏 - 跳过对象转储。” 我永远无法让它实际执行和对象转储。
我按照微软关于内存泄漏检测的文章 ( http://msdn.microsoft.com/en-us/library/e5ewb1h3(VS.80).aspx ) 中的说明进行操作,但没有成功。
在我的 stdafx.h 我有(重建整个项目):
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
在我的应用程序的入口点,我有:
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
我也希望它会以微软宣传的格式显示文件名和行号:
Detected memory leaks!
Dumping objects ->
C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18}
normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
虽然我什至无法获得对象转储,但我注意到其他人说他们看到了这些方面的东西(即使定义了 _CRTDBG_MAP_ALLOC ):
Detected memory leaks!
Dumping objects ->
{18} normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
我真的不想花时间覆盖 new 和 delete 运算符,所以我希望 CRT 调试能帮助我。如果这不起作用,我可能最终会覆盖 new 和 delete 运算符,但我真的想获得带有文件名和行号的分配信息(交叉手指)。
谢谢,基里尔