天天看点

CrtDumpMemoryLeaks

当程序发生内存泄漏的时候,调用_CrtDumpMemoryLeaks可以方便的打印出内存泄漏详细信息。这个函数常常用在程序结束的时候,用于检测已经分配的内存是否已经全部释放了。如下程序具体说明;

#include <iostream.h>

#include <crtdbg.h>

void main()

{

       char *cha;

       cha = new char[100];

       _CrtDumpMemoryLeaks();

}

从Output框中将可以看到如下打印信息,从打印信息中可以发现,如果程序发送内存泄漏的话,_CrtDumpMemoryLeaks函数将打印出内存分配的编号、内存块的类型(普通型、客户端型、crt型)、16进制表示的内存地址、内存块的大小和前16bytes的内容。有了这些信息我们就可以精确的定位到发生内存泄漏的程序位置,嘿嘿,不错吧!

Dumping objects ->

{43} normal block at 0x020A2EB0, 104 bytes long.

 Data: <                > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD

Object dump complete.

_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);

char *cha;

cha = new char[100];