打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Visual Leak Detector on Visual C++ 2017

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 的源代码及安装文件托管在 codeplex.com 上。地址为:https://vld.codeplex.com

下载最新版本(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 中,增加以下路径并将其移到最底端(读者请自行将以下路径替换为你实际的路径):

D:\Apps\x86\Visual_Leak_Detector\include

在 Library files 中,增加以下路径并将其移到最底端(读者请自行将以下路径替换为你实际的路径):

D:\Apps\x86\Visual_Leak_Detector\lib\Win32

找到 View ->Property Manager | Microsoft.Cpp.Win64.user

在 VC++ Directories | Include files 中,增加以下路径并将其移到最底端(读者请自行将以下路径替换为你实际的路径):

D:\Apps\x86\Visual_Leak_Detector\include

在 Library files 中,增加以下路径并将其移到最底端(读者请自行将以下路径替换为你实际的路径):

D:\Apps\x86\Visual_Leak_Detector\lib\Win64

使用 VLD

我们在 C/C++ 工程文件的任意一个 C/C++ 源文件中,添加 vld.h 这个头文件的引用:

#include <vld.h>

因为这个程序并没有内存泄漏,所以我们以 Debug 模式运行该程序,在 output 窗口中可以看到“没有发现内存泄漏”的输出结果:

现在我们手动制造一个内存泄漏。在 main() 的后面,添加这样一行代码,申请指针的内存空间但并不释放它:

char* p = new char[13];

再以 Debug 模式运行该程序,在 output 窗口中可以看到内存泄漏信息:

虽然能看到内存泄漏信息,然而这个信息的显示并不友好。这就是官方网站说依然不能支持 Visual Studio 2017 的原因。但是其实,这个问题是可以解决的。下面我们就来解决它。

解决问题

我的 Visual Studio 2017 的安装路径为:

%programfiles(x86)%\Microsoft Visual Studio\2017\Community

读者注意后面换成你自己的安装路径。

从以下目录中:

%programfiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow\Extensions\Cpp

拷贝(覆盖) \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。

再来一例。注意内存泄漏信息里面显示出内存填充的内容:

参考文章

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Visual Leak Detector使用方法
Qt应用中检测内存泄露——VLD
[转]初识Visual Leak Detector
消除内存泄漏
使用Visual Leak Detector for Visual C 捕捉内存泄露
跟我一起学Visual Studio 2005
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服