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

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

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

#error:  Not supported VS

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

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

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

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#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,在原项目中将动态库复制到项目中,再次运行:
在这里插入图片描述
此时,将vld源码中setup下dbghelp下对应位下的两个文件:dbghelp.dll和Microsoft.DTfW.DHL.manifest复制到测试项目运行目录下,再次运行成功。
下面是结果图,提示有两处内存泄漏:
在这里插入图片描述

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

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

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值