C++内存泄露检测-Windows平台VLD

一、安装Visual Leak Detector

下载地址:https://kinddragon.github.io/vld/

安装过程就一路next即可,如果自定义安装目录的话,需要记住安装的目录,默认目录 C:\Program Files (x86)\Visual Leak Detector,这个目录下的三个文件夹 libbininclude 需要拷贝到项目目录下,或者直接在CmakeLists.txt中引用。

二、新建工程

2.1、包含文件

我们复制出来的vld文件,CmakeLists.txt,以及我们的程序main.cpp

目录结构如下:

├─CmakeLists.txt
├─main.cpp
└─vld
    ├─bin
    │  ├─Win32
    │  └─Win64
    ├─include
    └─lib
        ├─Win32
        └─Win64

main.cpp

#include <iostream>
#include <vld.h>       // 需要包含这个头文件

int main() {
    int* p = new int[400];
    return 0;
}

主程序中需要包含头文件main.cpp,可以看到其中有明显的内存泄露。

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(MyProject)

# 设置VLD的路径
set(VLD_PATH "${CMAKE_CURRENT_SOURCE_DIR}/vld")

# 指定 C++ 标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 添加可执行文件
add_executable(MyProject main.cpp)

# 包含当前目录和VLD的头文件目录
include_directories(${CMAKE_SOURCE_DIR})
include_directories(${VLD_PATH}/include)

# 链接VLD的库文件
target_link_libraries(MyProject PRIVATE ${VLD_PATH}/lib/win64/vld.lib)

主要是包含VLD的路径以及头文件

2.2、编译

编译需要配置好cmake和visual studio环境,这一部分环境需要自己配置一下。

然后我们在相同的文件路劲下创建build文件夹,用来存放编译过程的中间文件。

mkdir build
cmake  -G "Visual Studio 16 2019"  -A x64 -DCMAKE_BUILD_TYPE=Debug ../
msbuild /m MyProject.sln /p:Platform=x64 /p:Configuration=Debug

编译好了后在build文件夹中就有visual studio的项目文件了。

请添加图片描述

双击这个就可以打开VS,然后将MyProject设置为当前项目,直接运行即可。

三、分析

运行结果如下

请添加图片描述

第一部分是内存泄露的地址以及泄露的内存大小

第二部分是函数调用栈,可以看到在我们的代码中发生泄露的地址是main()+0xA的地址

第三部分是发生泄漏的内存的值,现在全部被覆盖为CD

分是内存泄露的地址以及泄露的内存大小

第二部分是函数调用栈,可以看到在我们的代码中发生泄露的地址是main()+0xA的地址

第三部分是发生泄漏的内存的值,现在全部被覆盖为CD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LyaJpunov

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值