直接上代码:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
void Alloc()
{
int *pTestA=new int(10);
}
int main()
{
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
char *p=new char[1024*1024];
Alloc();
//_CrtDumpMemoryLeaks();
return 0;
}
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
函数的作用是,在程序退出前调用_crtdumpmemoryleaks,必须设置_CRTDBG_ALLOC_MEM_DF 和_CRTDBG_LEAK_CHECK_DF两个标志位。
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
new的第一个参数有五种,当前设置的是普通型,还有一种是客户端型,给MFC程序用的,其余还有三种类型这里不关心。