VS2005 C++ 中内存泄漏检测

来源:互联网 发布:日照分析软件 编辑:程序博客网 时间:2024/05/22 11:45

开发工具:VS2005。(在VC++6.0中好像也可以这么用)

目的:检测C++代码中有无内存泄漏(即动态分配了内存,而没有正确释放)。

操作步骤:

一、把以下debug_new.h和debug_new.cpp文件加入项目中。

debug_new.h

 

debug_new.cpp

 

 

 

二、在需要检测的DynamicMem.cpp中加入

1.

#include "debug_new.h"。

2.

 使用调试堆函数:


#define _CRTDBG_MAP_ALLOC 
#include<stdlib.h> 

#include<crtdbg.h>


  注意:#include 语句的顺序。如果更改此顺序,所使用的函数可能无法正确工作。

3.main()中一开始处加入REG_DEBUG_NEW宏

 

4.在需要检测内存泄漏的地方添加下面这条语句来输出内存泄漏信息:

_CrtDumpMemoryLeaks();


测试实例程序:

DynamicMem.cpp

 

 

三、按F5运行。

会在“调试”窗口中显示:

Detected memory leaks!
Dumping objects ->
e:/workspaces/c++/dynamicmem/dynamicmem/dynamicmem.cpp(78) : {120} normal block at 0x003B6360, 2 bytes long.
 Data: <AB> 41 42
Object dump complete.

 

这说明有内存泄漏。

如里把delete[] name;前去掉注释,则“调试”窗口中就不会出现以上的信息,说明无内存泄漏。

 

以上参考:http://dev.firnow.com/course/3_program/vc/vc_js/200843/108309.html

经本人修改。