(1)把vld.h vldapi.h拷贝到vc安装目录下的include文件夹下
(2)把lib文件拷贝到vc安装目录下的lib文件夹下
(3)需要测试的文件包含vld.h
visual leak detector(vld)是一款用于visual c++的免费的内存泄露检测工具,用户可从http://www.codeproject.com/tools/visualleakdetector.asp下载,该软件以库形式与用户的被测工程一起使用,由于vld是按lgpl(gnu lesser general public license)协议对外开源,所以使用vld是安全的,不必担心版权问题。
vctester是一款适合于vc代码的白盒测试工具,借助它的脚本驱动与脚本桩功能,可以方便的发起各项测试,因为内存泄露通常在特定操作下才发生,将vctester与vld配合使用,由vctester模拟各种应用场景,vld检测这些使用场合下有无内存泄露。
使用vld
先从网站下载vld的zip包,当前最高版本是v1.0,解压后得到vld.h、vldapi.h、vld.lib、vldmt.lib、vldmtdll.lib、dbghelp.dll等文件,把这些所有.h头文件拷贝到vc默认的include目录下,将所有.lib文件拷贝到vc默认的lib目录下,安装工作就完成了。
使用vld很简单,只须在包含入口函数的cpp或c文件中把vld.h头文件包含进来即可。该include语句要求放在最前面,假如当前工程定义预编译head文件(如stdafx.h),则放在“#include <stdafx.h>”语句之后就可以了。之后正常编译、按debug方式运行被测程序,等程序运行结束时,查阅vc的output窗口,会有“visual leak detector is now exiting.”一句打印信息,在这条件信息之前,假如当前程序没有内存泄露会有“no memory leaks detected.”信息打印,但假如有内存泄露,将有类似如下信息打印:
c:"vctester21"sample"vc6"samplemain.c (80): main
crt0.c (206): maincrtstartup
0x7c816fd7 (file and line number not available): registerwaitforinputidle
data:
cd cd cd cd cd ........ ........
visual leak detector detected 1 memory leak.
这个信息指明当前发生内存泄露所在的函数及源文件行号,泄露内存块的地址、长度及当前内存值。用鼠标双击指示源码行的提示信息,vc即自动跳转到相应代码行,我们就很方便的知道是哪一行出错了。
可以看出,vld用起来很简单,对它的实现原理感爱好的朋友可以阅读vld源码,也可参考dofty的文章:使用visual leak detector检测内存泄露。
- 1
- 2
前往页