Visual Leak Detector(以下简称:VLD) 是一个著名的 C/C++ 程序内存泄漏检测插件,而且还是免费且开源的。自从几年前发现了它,我一直用它直到现在。然而,现在最新版本的 VLD v2.5.1 官方并不支持 Visual Studio 2017,只支持 Visual Studio 2008 到 Visual Studio 2015。 真的不支持 Visual Studio 2017 吗?其实并非如此。在本文中我们就来试一试。 软件环境Visual Studio 2017 (安装了 C/C++ 开发组件) Visual Leak Detector v2.5.1 安装并配置 VLD目前 VLD 的源代码及安装文件托管在 上。地址为:https://vld. 下载最新版本(v2.5.1)的安装文件,安装。 我的安装路径为:D:\Apps\x86\Visual_Leak_Detector 你要记住你自己的安装路径,这个路径一会儿我们要用到的。 在 VLD 官方网站上查看帮助文档的“Using Visual Leak Detector”部分。 按照这个说明,用 Visual Studio 2017 打来任意一个 C/C++ 工程,然后找到 View ->Property Manager | Microsoft.Cpp.Win32.user 在 VC++ Directories | Include files 中,增加以下路径并将其移到最底端(读者请自行将以下路径替换为你实际的路径):
在 Library files 中,增加以下路径并将其移到最底端(读者请自行将以下路径替换为你实际的路径):
找到 View ->Property Manager | Microsoft.Cpp.Win64.user 在 VC++ Directories | Include files 中,增加以下路径并将其移到最底端(读者请自行将以下路径替换为你实际的路径):
在 Library files 中,增加以下路径并将其移到最底端(读者请自行将以下路径替换为你实际的路径):
使用 VLD我们在 C/C++ 工程文件的任意一个 C/C++ 源文件中,添加 vld.h 这个头文件的引用:
因为这个程序并没有内存泄漏,所以我们以 Debug 模式运行该程序,在 output 窗口中可以看到“没有发现内存泄漏”的输出结果: 现在我们手动制造一个内存泄漏。在 main() 的后面,添加这样一行代码,申请指针的内存空间但并不释放它:
再以 Debug 模式运行该程序,在 output 窗口中可以看到内存泄漏信息: 虽然能看到内存泄漏信息,然而这个信息的显示并不友好。这就是官方网站说依然不能支持 Visual Studio 2017 的原因。但是其实,这个问题是可以解决的。下面我们就来解决它。 解决问题我的 Visual Studio 2017 的安装路径为:
读者注意后面换成你自己的安装路径。 从以下目录中:
拷贝(覆盖) \x64\dbghelp.dll 到 D:\Apps\x86\Visual_Leak_Detector\bin\Win32 拷贝(覆盖) \x64\dbghelp.dll 到 D:\Apps\x86\Visual_Leak_Detector\bin\Win64 再以 Debug 模式运行该程序,在 output 窗口中可以看到内存泄漏信息: 这回看到的内存泄漏信息就是友好的。 这样就可以宣称 VLD 支持了 Visual Studio 2017。 再来一例。注意内存泄漏信息里面显示出内存填充的内容: 参考文章 |
|