当程序发生内存泄漏的时候,调用_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];