VS2019编译 内存泄漏检测工具VLD

目前官网上的安装包支持的最高VS版本是VS2015,本人现在用VS2019习惯了,VLD不支持VS2019,所以只有手动编译源码,下面记录一下编译过程:

下载源码:https://github.com/KindDragon/vld
文件目录结构如下:
VS2019编译 内存泄漏检测工具VLD_第1张图片
用VS2019打开vld_vs14.sln,如下图所示:
VS2019编译 内存泄漏检测工具VLD_第2张图片
由于自身编译项目只需要vld和Libs下的libformat两个项目,其他的暂时卸载掉,如下图:
VS2019编译 内存泄漏检测工具VLD_第3张图片
右键libformat项目,点开属性,修改下图的平台工具集属性:
VS2019编译 内存泄漏检测工具VLD_第4张图片
保存之后再次打开属性,修改Windows SDK版本,选择最新的:
VS2019编译 内存泄漏检测工具VLD_第5张图片
同理配置vld项目,配置完成后选择vld项目,生成,出现一个错误:

#error:  Not supported VS

双击报错地址在vld.cpp中第976行,由于VS2019的_MSC_VER号是1924,所以这里可以改成如下代码:

#if _MSC_VER > 1924
#error Not supported VS
#endif

或者直接注释掉这三句都可以,再次生成成功,生成的文件如下图:
VS2019编译 内存泄漏检测工具VLD_第6张图片
测试一下vld的内存泄漏检测功能
新建一个控制台空程序,将编译好的vld.lib复制到项目中,复制vld.h和vld_def.h到项目中,添加好头文件包含和lib包含
VS2019编译 内存泄漏检测工具VLD_第7张图片
VS2019编译 内存泄漏检测工具VLD_第8张图片编写代码

#include 
#include 
#include 
#include "vld.h"

int main()
{
	//new
	try {
		char* cplusplus = new char[20];
	}
	catch (const std::bad_alloc) {}

	//malloc
	char* c = (char*)malloc(20 * sizeof(char));

	return 0;
}

编译运行,提示没有找到vld_x64.dll,在原项目中将动态库复制到项目中,再次运行:
VS2019编译 内存泄漏检测工具VLD_第9张图片
此时,将vld源码中setup下dbghelp下对应位下的两个文件:dbghelp.dll和Microsoft.DTfW.DHL.manifest复制到测试项目运行目录下,再次运行成功。
下面是结果图,提示有两处内存泄漏:
VS2019编译 内存泄漏检测工具VLD_第10张图片

这里记录一个问题:
用VS2019编写测试代码运行的时候,如果安装上面的步骤直接将dbghelp.dll复制到运行目录下,运行程序时是要异常报错的,程序不能正常退出,查了很久才发现是dbghelp.dll的版本不对应,需要如下图的dll
VS2019编译 内存泄漏检测工具VLD_第11张图片
出现运行崩溃的原因是在编译vld项目时修改了Windows SDK版本,而vld源码中自带的dbghelp.dll是Windows8.1的库,所以两个不兼容。

这里附上该文章vs2019编译好的库https://download.csdn.net/download/youyicc/12065554

你可能感兴趣的:(VS2019编译 内存泄漏检测工具VLD)