Visual Leak Detector简称VLD,我所下载的版本为1.9d,支持VC6, VC7(2003), VC8(2005),开源,可以根据源码自行编译, 64位机器下可以自己编译位64位的使用,不过在我的机器下(64位CPU, 64位Windows7)没有单独编译为74位也可以使用。
VLD只针对程序的Debug版本有效,对Release版本无效,因此在发布版本中可以不管该代码的引入,因为不会有任何作用,可放心使用。
下载地址:http://www.codeproject.com/Articles/9815/Visual-Leak-Detector-Enhanced-Memory-Leak-Detectio;
使用方法:
以VS2005为例,工具---选项---项目和解决方案---VC++目录:①包含文件:添加目录,为安装目录下的include文件夹,并将该条目录移动到列表的最后一条 ②库文件:添加目录,为安装目录下的lib文件夹,同样移动到最后一条。 ③然后在将要使用该工具的一个或多个C/C++源文件中添加头文件#include "vld.h"即可,需要注意的是:该头文件要放在所有预编译头文件之后,比如stdafx.h等,也可以放入该预编译头文件stdafx.h,而在源文件中引入该预编译头文件即可,该vld.h可以在多个源文件或普通头文件中引入,比如在a.h和b.h中都引入vld.h,有多个源文件引入了a.h和b.h,那么在进程中只有一份vld.h的代码,而不会有副作用(仅对1.9d版本,其他版本不详)。
另:在安装目录下的vld.ini下的参数意义以及包括但不限于本文中提到的内容在安装目录下的readme中都有详细说明。
VLD还提供了几个简单的API来给用户使用,如下:
void VLDDisable (void); //使内存泄漏检测失效
void VLDEnable(void); // 使内存泄漏检测有效
eg.
在output窗口中的内容:
关于其他VS版本的支持:在VS2010的外接程序管理器中搜索visual leak detector,可以搜到到该插件,该插件的说明是for VS2008/2010/2012,因此,如果使用这些版本的VS可以用这种方式尝试。