Visual LeakDetector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。它的特点有:(1)、它是免费开源的,采用LGPL协议;(2)、它可以得到内存泄露点的调用堆栈,可以获取到所在文件及行号;(3)、它可以得到泄露内存的完整数据;(4)、它可以设置内存泄露报告的级别。

默认情况下,只有在Debug模式下才会启用VLD的功能。

在使用的时候只要将VLD的头文件和lib文件放在工程文件中即可。

在需要检测内存泄露的源文件中添加#include “vld.h”

VLD只能在Windows下使用,它应用在C/C++语言中。

通过修改vld.ini文件(ReportFile选项),可以设置内存泄露报告的保存位置。

VLD好像对中文路径不支持。

VLD的各个版本对应适用于不同的VC/VS编译器,注意选择合适的版本。

1. 从http://vld.codeplex.com/SourceControl/latest#README.md下载最新源代码,解压缩,里面包含有源码、vs2010工程配置、以及一些依赖库,如dbghelp等;

2. 打开vld_vs10.sln,在32位/64位下,分别编译debug和release下vld工程,会在当前目录下生成bin文件夹,里面包含相应的库文件;

3. 新建控制台工程VLDtest,在Debug下运行,代码如下:

stdafx.cpp:

#include "stdafx.h"#ifdef _DEBUG#pragma comment(lib, "../../../src/VLD/bin/Win32/Debug/vld.lib")
#else//#pragma comment(lib, "../../../src/VLD/bin/Win32/Release/vld.lib")
#endif

VLDtest.cpp:

#include "stdafx.h"
#include "../../src/VLD/vld.h"
#include <iostream>using namespace std;void fun()
{char* tmp = new char[10];memset(tmp, 0, 10);
}int main(int argc, char* argv[])
{fun();cout<<"ok!"<<endl;return 0;
}

4. 运行提示,“无法启动此程序,因为计算机中丢失vld_x86.dll”,解决方法,将bin/Win32/Debug/vld_x86.dll拷贝到VLDtest执行目录下或将vld_x86.dll路径添加到系统环境变量中;

5. 运行提示,“应用程序无法正常启动(0xc0150002)”,将源代码中的/setup/dbghelp/x86文件夹下的dbghelp.dll和Microsoft.DTfW.DHL.manifest两个文件拷贝到VLDtest执行目录下即可;

6. 直接按F5运行,可以在Output窗口显示内存泄漏的相关信息,包括发生内存泄漏的文件名和行号,双击即可定位到内存泄漏的具体位置;

7. 或者直接运行,相关信息可以显示在命令行窗口中;

8. 也可将内存泄漏信息写入文件中,将源代码中的vld.ini文件拷贝到VLDtest工程目录下,即与VLDtest.vcxproj同目录,修改vld.ini文件中的选项参数,ReportFile = .\../../../lib/dbg/x86_vc10/memory_leak_report.txt,ReportTo =both(原始ReportTo = debugger),重新运行后,会在执行目录下生成一个memory_leak_report.txt文件;或者将vld.ini文件拷贝到执行目录下,运行VLDtest[dbg_x86_vc10].exe文件也可生成报告文件;

9. 在Release下运行,VLD不起作用,VLDtest工程不用作任何配置和调整;

10. 也可不用编译源代码,直接从http://vld.codeplex.com/releases下载,然后安装即可,里面包含需要的库和头文件。

图中为运行测试代码时显示的内存泄漏信息:

GitHub:https://github.com/fengbingchun/Messy_Test

内存泄漏检测工具VLD在VS2010中的使用举例相关推荐

  1. 内存泄露检测工具VLD相关配置

    参考链接: VLD(Visual LeakDetector)内存泄露库的使用 VS2019编译 内存泄漏检测工具VLD 一.源码下载 源码下载链接:https://github.com/KindDra ...

  2. Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构与底层研发

    Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构与底层研发 Linux C/C++ 内存泄漏检测工具:Valgrind - 张宴的博客 - Web系统架构 ...

  3. C/C++的内存泄漏检测工具Valgrind memcheck的使用经历

    Linux下的Valgrind真是利器啊(不知道Valgrind的请自觉查看参考文献(1)(2)),帮我找出了不少C++中的内存管理错误,前一阵子还在纠结为什么VS 2013下运行良好的程序到了Lin ...

  4. C++内存泄漏检测工具

    C++内存泄漏检测工具 1.VC自带的CRT:_CrtCheckMemory   调试器和 CRT 调试堆函数 1.1用法: /************************************ ...

  5. 内存泄漏检测工具(转载)

    内存泄漏检测工具2007年08月08日 1.     ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库. 2.     Dmalloc-Debug ...

  6. 插桩valgrind_基于动态插桩的CC++内存泄漏检测工具的设计与实现.pdf

    基于动态插桩的CC++内存泄漏检测工具的设计与实现.pdf 第32卷第6期 计 算 机 应 用 研 究 V01.32No.6 20l5年 6月 ApplicationResearchofCompute ...

  7. Android内存泄漏检测工具使用手册

    Android内存泄漏检测工具使用手册 前言 LeakCanary 在Android中接入LeakCanary LeakCanary内存泄漏分析 内存泄漏上报到服务端 Shark Shark分析当前应 ...

  8. java内存泄漏怎么检测_JAVA内存泄漏原因和内存泄漏检测工具

    JAVA内存泄漏原因和内存泄漏检测工具 摘要 虽然Java 虚拟机(JVM)及其垃圾收 集器(garbage collector,GC)负责管理大多数的内存任务,Java 软件程序中还是有可能出现内 ...

  9. iOS开发之内存泄漏检测工具-Leaks

    引言 我们在实际开发过程中,经常会不小心造成循环引用问题,从而造成内存泄漏问题,那么我们该如何检测我们工程那个位置存在内存泄漏问题呢?这就需要用到Xcode自带的内存泄漏检测工具-Leaks. 内存泄 ...

最新文章

  1. socket Php 粘包,python3 tcp的粘包现象和解决办法解析
  2. how to request a curl operation from alibaba cloud
  3. Maven 配置环境变量后无法立刻生效-原因是黑窗口是配置前打开的,重新打开即可
  4. python tkinter 布局_python tkinter组件摆放方式详解
  5. 面试题——4种数组去重的方法
  6. 安装secureCRT提示sorry的解决办法
  7. Codeforces 360E 贪心 最短路
  8. 会议交流 | 2021年全国知识图谱与语义计算大会(CCKS 2021)征稿通知
  9. Zend Studio 实用快捷键一览表
  10. 营口理工学院计算机分数,营口理工学院历年分数线 2021营口理工学院录取分数线...
  11. 电脑自动关机设置方法
  12. 网渲显示服务器错误,【渲染服务】渲染失败的几种原因
  13. 桌面CPU性能排行榜
  14. 数值分析:高斯消元法
  15. 第六章 DDL语言
  16. arduino红外对管
  17. jupyter notebook内核挂了
  18. 优雅的99乘法表以及format使用
  19. tv3描述文件代理服务器,tvos14描述文件-tvos14beta描述文件更新官网 v1.0预约_手机乐园...
  20. Python处理Excel表格匹配问题

热门文章

  1. Yolo(3)(项目)Yolo v3 目标检测(85分类)
  2. 【神经网络】(7) 迁移学习(CNN-MobileNetV2),案例:乳腺癌二分类
  3. python中意外缩进是什么意思_与python中的“意外缩进”怎么办?
  4. 【论文速读】基于图像的伪激光雷达三维目标检测
  5. 相机标定 matlab opencv ROS三种方法标定步骤(3)
  6. 鱼眼图像的unwarping过程
  7. 设置VSCode代码编辑器右侧的Minimap代码缩略图滚动条切换显示、隐藏的快捷键Alt+M
  8. UE capability与 双连接相关的参数。
  9. linux C 多线程编程
  10. 【Visual Studio 扩展工具】如何在ComponentOneFlexGrid树中显示RadioButton