调试内存泄漏的方法

来源:互联网 发布:计算机编程专业 编辑:程序博客网 时间:2024/05/22 03:14

VC中要调试内存泄漏,只需要在程序中包含以下语句:

 

#define CRTDBG_MAP_ALLOC

#include <stdlib.h>

#include <crtdbg.h>

 

然后在main开始处,加入如下语句:

#ifdef _DEBUG

    _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

#endif

 

或者 在程序结束处加入

#ifdef _DEBUG

    _CrtDumpMemoryLeaks();

#endif

 

这样在程序结束的时候就会在输出窗口输出内存泄漏的信息,:

Detected memory leaks!

Dumping objects ->

{651} normal block at 0x00FA9B58, 376 bytes long.

 Data: < b=  }= ( =   = > F0 62 3D 00 90 7D 3D 00 28 96 3D 00 C0 AE 3D 00

Object dump complete.

 

要想找到具体是哪里new了没有释放,只需要在程序开头再添加一句:

_CrtSetBreakAlloc(xxx);

xxx为泄漏的内存块,可以从输出信息里面查找到,如上面的话就是651,可以理解成第几次分配的内存.

原创粉丝点击