最近想检测下项目中内存泄露的情况,选中了vld这款。在查找使用方法的时候,大都是控制台下的示例,添加到main函数所在的源文件上。换成mfc就纠结了,不知道添加到哪里去。本文记录控制台和mfc中的使用vld过程。
vld资源:
1)、大家可以移步下边的网址下载:
http://vld.codeplex.com/releases/view/82311
2)、也可以到我的资源中下载:
http://download.csdn.net/detail/alex_my/6238977
本文使用的是我的资源中的vld1.0版本,vs2008。
1、控制台:
将资源下载后,解压到项目根目录。

据说在win7下,需要将dbghelp.dll放到debug目录中。
将dbghelp.dll放入debug目录后,才能定位哪一行出错。// 2014.05.09
打开工程,在main所在的文件添加代码:#include "vld.h",只要添加这个就足够了。
写了一个func()函数测试:

当整个过程运行完毕之后,结果:

可以双击相应的行,确定出问题的地方。
2、mfc
这里使用的是vs2012版,与vs2008几乎一样。
1)首先创建一个mfc工程。
2)假设在工程里有一个include文件夹专门放置头文件,lib文件夹专门放置lib文件。
3)将解压出的vld中的vld.h,vldapi.h放入include文件夹中。vld.lib,vldmt.lib,vldmtdll.lib放入到lib文件夹中。
4)进行必要设置:
c/c++ --> general --> additional include directories : include
linker --> general --> additional library directories: lib
linker --> input --> additional dependencies: vld.lib,vldmt.lib,vldmtdll.lib
5)添加vld.h头文件
在控制台下是放在main函数所在的源文件中,而在mfc下,则放在theapp初始化的源文件中。
如果找不到的,可以全文搜索:theapp。
添加好vld.h头文件后,可以写一个测试函数,如上的func函数。
f5运行,在output窗口可以看见:
visual leak detector version 1.0 installed (single-threaded static).
shift + f5,退出
可以看见内存泄露的地方,如同控制台:
6)编译过程出错
可能在编译过程中出错,cannot open file 'libcd.lib'。
解决方案:
vs2008:linker --> input --> ignore specific library: libcd
vs2012: linker --> input --> ignore specific default library: libcd