实操VS2015配置内存泄漏检查工具Visual Leak Detector

VS配置及使用Visual Leak Detector (检测内存泄漏工具)

 下载VLD,可以去官网下载.

http://vld.codeplex.com/


默认安装后记录安装目录(以下简称VLDpath),例如C:\Program Files (x86)\Visual Leak Detector

 

3.配置Visual Leak Detetctor的输出文件.

  >VLDpath中打开vld.ini文件,ReportTo设置为both.

 

 

4.VS项目添加该工具的配置

 

 ①打开项目属性页                                                                  ②分别在VC++目录中包含目录库目录中添加路径  VLDpath\includeVLDpath\lib

                               

            

 

5.使用方法简介

  需要检测内存泄漏的函数的.cpp文件中包含vld.h即可.

    即加入#include<vld.h>

  注意:如果这个cpp文件中包含了stdafx.h,则将包含vld.h的语句放在stdafx.h的包含语句之后,否则放在最前面

 

 

6.测试一下

 >新建一个win32控制台应用程序项目,这里我们将#include<vld.h>”stdafx.cpp”的如下位置.

 

// stdafx.cpp : 只包括标准包含文件的源文件
// ConsoleApplication2.pch 将作为预编译头
// stdafx.obj 将包含预编译类型信息


#include<vld.h> 包含VLD的头文件
#include "stdafx.h"

 

>示例程序

#include "stdafx.h"

#include<stdlib.h>

void f()

{

int *p_int = new int(12345);

char *p_char = new char('k');

printf("int=%d,char=%c ", *p_int, *p_char);

//free(p_int);

//free(p_char);

}

int main()

{

f();

    return 0;

}

 

 

 

 

如何查看检测结果?

   使用情况1.

    Ctrl+F5直接运行程序,可以看到程序框中出现了Visual Leak Detector字样,表明我们的配置已经OK


    接着会发现在工程目录下面生成一个文件“memory_leak_report.txt”

  可以从中找到问题代码的位置行数.

Visual Leak Detector Version 2.5.1 installed.
    Outputting the report to the debugger and to C:\Users\bm00076\Documents\Visual Studio 2015\Projects\ConsoleApplication2\ConsoleApplication2\memory_leak_report.txt
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 1 at 0x005EC3C0: 4 bytes ----------
  Leak Hash: 0x170D4305, Count: 1, Total 4 bytes
  Call Stack (TID 5932):
    ucrtbased.dll!malloc()
    f:\dd\vctools\crt\vcstartup\src\heap\new_scalar.cpp (19): ConsoleApplication2.exe!operator new() + 0x9 bytes
    c:\users\bm00076\documents\visual studio 2015\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp (9):ConsoleApplication2.exe!f() + 0x7 bytes
    c:\users\bm00076\documents\visual studio 2015\projects\consoleapplication2\consoleapplication2\consoleapplication2.cpp (27): ConsoleApplication2.exe!main()
    f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (74): ConsoleApplication2.exe!invoke_main() + 0x1B bytes
    f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (264): ConsoleApplication2.exe!__scrt_common_main_seh() + 0x5 bytes
    f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl (309): ConsoleApplication2.exe!__scrt_common_main()
    f:\dd\vctools\crt\vcstartup\src\startup\exe_main.cpp (17): ConsoleApplication2.exe!mainCRTStartup()
    kernel32.dll!BaseThreadInitThunk() + 0x12 bytes
    ntdll.dll!RtlInitializeExceptionChain() + 0x63 bytes
    ntdll.dll!RtlInitializeExceptionChain() + 0x36 bytes
  Data:
    39 30 00 00                                                  90...... ........
 

 

    使用情况2.

按下F5调试命令,程序运行完毕之后,我们在输出栏中,发现以下类似于“memory_leak_report.txt”内容

 

直接点击,便跳转到问题代码的位置行了.

 

7.其他问题

  如在安装或者使用过程中遇到其他疑问,欢迎讨论!

 

  • 4
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
VLD同样是一款开源检测内存泄露软件的简称:Visual Leak Detector。 初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题。内存泄漏是最常见的内存问题之一。内存泄漏如果不是很严重,在短时间内对程序不会有太大的影响,这也使得内存泄漏问题有很强的隐蔽性,不容易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的,从性能下降到内存耗尽,甚至会影响到其他程序的正常运行。另外内存问题的一个共同特点是,内存问题本身并不会有很明显的现象,当有异常现象出现时已时过境迁,其现场已非出现问题时的现场了,这给调试内存问题带来了很大的难度。 Visual Leak Detector是一款用于Visual C++的免费的内存泄露检测工具。相比较其它的内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点: 1、 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 2、 可以得到泄露内存的完整数据; 3、 可以设置内存泄露报告的级别; 4、 它是一个已经打包的lib,使用时无须编译它的源代码。而对于使用者自己的代码,也只需要做很小的改动; 5、 他的源代码使用GNU许可发布,并有详尽的文档及注释。对于想深入了解堆内存管理的读者,是一个不错的选择。 常见使用方法: 在main函数文件的最上方 #ifdef WIN32 || WIN64 #define VLD_FORCE_ENABLE #include #endif 修改vld安装目录的ini文件中 修改 ReportTo = debugger ->> ReportTo = both
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kevinwowly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值