您的位置:首页 > 编程语言 > C语言/C++

Visual C++内存泄露检测—VLD工具使用说明

2016-10-26 15:25 429 查看
Visual C++内存泄露检测—VLD工具使用说明

一.        VLD工具概述

Visual Leak Detector(VLD)是一款用于Visual
C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;并且是开源免费的。

 

二.        VLD下载

http://www.codeproject.com/tools/visualleakdetector.asp

本文后附有vld1.0的工具包,下载解包后就可使用。

 

三.        VLD安装

方法一:

解压之后得到vld.h, vldapi.h, vld.lib, vldmt.lib,
vldmtdll.lib, dbghelp.dll等文件。将.h文件拷贝到Visual
C++的默认include目录下,将.lib文件拷贝到Visual
C++的默认lib目录下,将dbghelp.dll拷贝到你的程序的运行目录下,便安装完成了

方法二:

解压之后得到vld.h, vldapi.h, vld.lib, vldmt.lib,
vldmtdll.lib, dbghelp.dll等文件。将.h文件和.lib文件拷贝到你要检测的工程文件所在的目录里(只针对此工程),将dbghelp.dll拷贝到你的程序的运行目录下。就完成安装了。

 

四.        VLD使用

在包含入口函数的.cpp文件中包含vld.h就可以了。下面以一个例子进行说明(源程序见附录):

1. 加入头文件:

2.      编译:

3.      在debug方式下运行:查看VC的输出信息:

内存泄露所在的位置

 

 

4.查看VC输出信息:

 "WARNING: Visual Leak Detector detected meory leaks!"

 

5. 如果没有内存泄露,此输出的信息为:

      "No memory leaks detected"

 

 

五.        附录

1.测试用文件

#include "vld.h"

 

#include "iostream.h"

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

 

void Function1(char *p)

{

       char *pTmp = new char[255];

       memset(pTmp,
0x0, 255);

       strncpy(pTmp, p,
255);

       //delete pTmp;

}

 

int Function2(void)

{

       char acString[]
= "this is test!";

       Function1(acString);

       return 1;

}

 

void Function3(void)

{

       Function2();

}

int main(void)

{

       cout << "begin.............." << endl;

 

       Function3();

       cout << "end................" << endl;

       return 1;

}

 

2.Vld1.0工具包

 

 

3.关于linux的内存泄露,可以使用valgrind工具进行检测。
http://www.cnblogs.com/lidabo/archive/2012/07/19/2599745.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: