Windows下的应用程序在做内存泄漏测试时,无需重新编译的检测工具很少,只有(DR. Memory, UMDH等)少数软件,而且提示较不明确。而VLD(Visual LeakDetector)虽然需要重新编译,但是仅需增加一个include文件,且仅在debug模式下工作,对项目影响较小,可以考虑。
Visual Leak Detector is a free, robust, open-source memory leak detection system for Visual C++.
下面说说VLD的特点:
1) 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在的文件及行号;
2) 可以得到泄漏内存的完整数据;
3) 可以设置内存泄漏报告的级别;
4) 它以动态库的形式提供,无需编译源代码,只需要很小的改动程序;
5) 源代码使用GNU许可发布,并有详细的文档及其注释
与VS自带的工具比较:The main difference between the CRT Debug Library and VLD, is that Visual Leak Detector shows you the complete callstack used for memory allocation has led to the leak.
分步指南
- 获取VLD
- 从项目官方网站获取:项目主页:http://vld.codeplex.com/
- 从Visual Studio的扩展和更新中,搜索VLD。可以找到Visual Leak Detector for Visual C++。
- 下载vld-2.5.1-setup.exe(当前的最新版)并安装,在安装过程中会出现
默认是全部勾选的,直接Next至Finish。和以前的版本不一样,vld会将自己配置在VS上,所以我们现在不用再对自己的项目进行进行对vld的include头文件和library库文件的添加配置,我们需要用的时候只需要添加头文件:#include “vld.h” 即可。 - 新建工程, 打开项目属性, 就可以看到: (如果是已有项目,需自行添加引用的vld头文件目录)
- 新建源文件,文件名随便起一个: *.cpp ,在源文件中引用“include "vld.h"”即可。
#ifdef _DEBUG
#include "vld.h"
#endif
- 选择Debug模式,运行:
- 结束程序后这样从debugger就可以知道程序中那里出现了内存泄漏了,上图我们可以看到问题出现在哪个文件以及哪一行。
- 如果不依赖IDE,则需要修改VLD的默认设置,让输出同时可以记录到文件中
-
修改vld安装目录下的vld.ini
vld配置文件ReportFile = memory_leak_report.txt
ReportTo = both
- 保证程序执行目录中同时保存有pdb文件
- 运行debug版程序后,同目录会生成vld输出文件,以供查看
注意:
1. 仅支持Visual Studio 2008-2015
2. VLD 内存检测工具,只能检测使用VC++编译器,不能用于检测MinGW编译器。所以如果使用跨平台的IDE如QT,请注意使用VLD时选择VC++编译器。
3. 仅工作在debug模式
4. 若程序包含多个dll,则每个dll都需要有至少一个C/C++文件包含 vld.h
5. QT可正常使用,暂未发现误报的问题
2. VLD 内存检测工具,只能检测使用VC++编译器,不能用于检测MinGW编译器。所以如果使用跨平台的IDE如QT,请注意使用VLD时选择VC++编译器。
3. 仅工作在debug模式
4. 若程序包含多个dll,则每个dll都需要有至少一个C/C++文件包含 vld.h
5. QT可正常使用,暂未发现误报的问题
相关推荐
在 Windows 平台下进行 C++ 开发时,内存管理是一项非常重要的任务。由于 C++ 语言本身的特性,开发者需要手动管理内存分配与释放,这就很容易导致内存泄露的问题。内存泄露不仅会消耗系统资源,还可能导致程序性能...
在Windows操作系统中,内存泄漏是一种常见的程序错误,它发生在程序分配了内存但未能正确释放,导致系统资源逐渐耗尽。为了有效地检测和解决这类...如果你的项目中遇到内存泄漏的问题,不妨尝试使用VLD进行检测和修复。
VLDD (Visual Leak Detector for Dynamics) 是一款针对Windows平台的开源C++内存泄漏检测工具,用于帮助开发者定位并解决内存管理中的问题。"vld2.1.zip" 压缩包提供了VLDD 2.1版本的源码、文档及相关库文件,便于在...
`vldmtdll.lib`和`vldmt.lib`可能是VLD的多线程版本的库文件,用于支持多线程环境下的内存泄漏检测。`vld.lib`可能是单线程版本或通用版本。根据你的项目需求,选择合适的库进行链接。 `readme.txt`文件提供了关于...
windows下Qt creator 使用 VLD 工具的方法,下载 安装 使用 用浏览器打开
相比其他Windows内存泄漏检测工具,如LeakDiag、UMDH等,VLD-10在易用性和功能上具有一定的优势。 **最佳实践** 1. **早期检测**:在开发早期就引入内存泄漏检测工具,可以避免问题积累。 2. **持续测试**:定期...
VLD(Visual Leak Detector)是一款针对Windows平台的开源内存泄漏检测工具,专门用于帮助C++开发者检测和定位程序中的内存泄漏问题。 VLD内存泄漏检测工具的工作原理基于动态链接库(DLL),在程序运行时注入到...
标题"vld检测 Qt内存泄露问题编译器一定要是MSVC"指出了使用VLD进行内存泄漏检测的前提条件,即你的开发环境应基于MSVC。这是因为VLD是专为Windows平台上使用MSVC编译器的应用程序设计的,它能够与MSVC的调试器紧密...
在Windows平台上,开发者常常使用`vld1.0`来帮助检测C++应用程序中的内存泄漏问题。 `vld1.9h-setup.exe`是`vld1.9`版本的安装程序,通常包含了`vld`库的所有必要组件,包括动态链接库(`.dll`)、头文件(`.h`)和...
为了帮助开发者有效地检测和定位C++程序中的内存泄漏问题,"c++ vld 内存泄露检测" 提供了一个简单易用的解决方案。 VLD,全称Visual Leak Detector,是一款为Visual C++编译器设计的开源内存泄漏检测工具。它通过...
标题“vld-1.9h-setup”指的是Visual Leak Detector(VLD)的一个特定版本的安装程序,这个工具主要用于帮助开发者在使用Visual C++编译器进行Windows应用程序开发时检测内存泄漏。VLD是一个开源的内存泄漏检测工具...
VLD,全称为Valgrind Leak Detector,是一款针对Windows平台的内存泄漏检测工具。它基于Valgrind,一个广泛用于Linux系统的内存错误检测框架,但针对Windows环境进行了优化。内存泄漏是程序运行过程中常见的问题,...
Visual Leak Detector(VLD)是一种专为Windows平台上使用Microsoft Visual C++编译器开发的应用程序设计的内存泄露检测工具。它通过动态链接库(DLL)的形式,在运行时检查并报告内存泄露情况,帮助开发者定位并...
VLD(Visual Leak Detector)是一款开源的、针对Windows平台的C++内存泄漏检测工具。它能够帮助开发者在程序运行时检测出内存泄露,尤其是在调试模式下效果显著。VLD的工作原理是在NEW和DELETE操作之间插入钩子函数...
总的来说,Visual Leak Detector 2.5.1是Windows环境下进行C++开发的重要辅助工具,它可以帮助开发者及时发现并修复内存泄漏问题,提升软件质量和稳定性。通过简单的安装和直观的使用方式,VLD成为了每个Windows C++...
`Vld-10`是一个专门针对这类问题的内存泄露检测工具,尤其适用于Visual C++(VC)开发环境。该工具能够帮助开发者定位并解决程序中的内存泄露问题,提高代码质量和程序稳定性。 `Vld-10`的使用主要包括以下几个关键...
1. 下载并安装VLD,一般下载的是名为vld-x.x.zip的压缩包,例如这里的vld-10。 2. 解压压缩包,将包含的.lib和.dll文件添加到项目中相应的位置。 3. 在源代码中包含`#include <vld.h>`,确保在任何内存分配发生之前...
5. **与其他Valgrind工具集成:** 除了内存泄漏检测,VLD还可以与其他Valgrind工具(如Memcheck、Helgrind等)结合使用,进行更全面的性能分析。 **VLD的使用技巧和注意事项:** 1. **编译模式:** 为了得到最准确...
本资源是“内存泄露工具”,具体版本为vld-2.5.1-setup,是一款用于检测内存泄漏的专业工具。 VLD,全称为Visual Leak Detector,是一款开源的、针对Windows平台的C++内存泄漏检测工具。它集成在Visual Studio中,...