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; }