VisualC++ debugger 和 CRT 库
第一步:包含以下头文件
#define _CRTDBG_MAP_ALLOC
#include<stdlib.h>
#include<crtdbg.h>
第二步:接管new操作符
#ifdef _DEBUG
#ifndef DBG_NEW
#define DBG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DBG_NEW
#endif
#endif
第三步:在代码结束出输出内存泄漏信息
_CrtDumpMemoryLeaks();
全部代码
注:在正式版代码发布之前可以利用这个工具检测程序是否有内存泄漏,当正式版代码发布时,最好还是将上述代码去掉以免影响性能。
#define _CRTDBG_MAP_ALLOC
#include<stdlib.h>
#include<crtdbg.h>
#include<iostream>
#include<stdio.h>
#ifdef _DEBUG
#ifndef DBG_NEW
#define DBG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DBG_NEW
#endif
#endif
using namespace std;
//不释放内存
void demo_1()
{
int* p = new int[100];
p[0] = 1;
}
//释放内存
void demo_2()
{
int* p = new int[100];
p[0] = 1;
delete[]p;
}
int main()
{
demo_2();
for (int i = 0; i < 3; i++)
demo_1();
_CrtDumpMemoryLeaks(); //检测内存是否泄漏
return 0;
}