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

news2024/9/23 13:19:45

一、安装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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2038705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[独家原创]基于(牛顿拉夫逊)NRBO-TCN多变量回归预测(多输入单输出) Matlab代码

[独家原创]基于(牛顿拉夫逊)NRBO-TCN多变量回归预测(多输入单输出) Matlab代码 NRBO优化的超参数为&#xff1a;卷积核个数、正则化系数、初始化学习率 1.程序已经调试好&#xff0c;无需更改代码替换数据集即可运行&#xff01;&#xff01;&#xff01;数据格式为excel&…

色轮在数据可视化中的应用

在数据可视化中&#xff0c;色彩的运用不仅仅是为了美观&#xff0c;更是为了传达信息、区分数据和提升图表的易读性。本文探讨色轮及其色彩公式的应用&#xff0c;帮助大家更好地运用色彩来提升数据可视化的效果。 1、色轮的基础概念 色轮是一个用于表示颜色之间关系的图形工…

Linux自动构建工具——make/makefile

目录 一、make/makefile是什么&#xff1f; 二、深入了解 1.基本命令 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、make/makefile是什么&#xff1f; 在Linux中make是一条指令&#xff0c;makefile是文件。make的核心功能就是读取一个或者多个…

解决问题:Arcgis10.8“数据“-“导出至CAD“时就卡死了

问题现象&#xff1a;我们在使用Arcgis10.8软件&#xff0c;执行 “数据导出至CAD”操作时&#xff0c;会出现卡死的情况&#xff0c;步骤如下图所示&#xff1a; 解决方案&#xff1a;在菜单栏依次选择“地理处理”-“地理处理选项”&#xff0c;然后在“后台处理”和“发生错…

黄金市场展望:CPI数据引发关注,技术面看涨

亚市现货黄金行情 8月14日周三&#xff0c;亚市盘中现货黄金价格小幅下跌&#xff0c;目前交投在2462美元/盎司附近。投资者将重点关注即将公布的美国消费者物价指数&#xff08;CPI&#xff09;数据&#xff0c;预计这将对黄金市场产生重大影响。 美联储政策预期与CPI数据 市场…

IIC电路详细设计

下面我们来聊一聊IIC。 首先要知道,为什么IIC需要接上拉电阻?这里就需要承接到上一部分的内容:三极管。 注意到这样一句话:「连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能 」,这里就涉及到「漏极/集电极开路」、「上拉电阻」和「线与」两个概念…

ReetrantReadWriteLock 读写锁原理

一、为什么要出现读写锁&#xff1f; 我们知道synchronizer 和 ReentrantLock 都是互斥锁 但现实很多业务场景都是读多写少&#xff0c;针对这种场景在并发中若采用 synchronizer 和 ReentrantLock 来保证原子性&#xff0c;但会降低代码的性能。这种场景&#xff0c;就可以…

数据库技术核心:迭代逻辑思考

文章目录 数据库演进史第一阶段&#xff1a;早期文件系统第二阶段&#xff1a;关系数据库&#xff08;RDBMS&#xff09;第三阶段&#xff1a;面向对象数据库&#xff08;OODBMS&#xff09;第四阶段&#xff1a;分布式数据库和 NoSQL 数据库第五阶段&#xff1a;NewSQL 数据库…

广告资料库是什么?如何正确使用Facebook广告资料库?一文解决你的烦恼!

什么是广告资料库 广告营销领域&#xff0c;创意和策略的更新速度极快。为了跟上这种节奏&#xff0c;广告资料库应运而生&#xff0c;成为广告人和营销专家的重要工具。广告资料库是一个集中存储和管理广告素材、创意案例、市场数据和用户反馈的平台。它不仅帮助用户获得灵感…

Redis集群:概念和部署示例

目录 Redis 集群的优点 集群模式 主从模式 缺陷 哨兵模式 缺陷 集群模式&#xff08;Redis Cluster&#xff09; 数据分片原理 添加节点 删除节点 Redis集群的分片方式 故障转移机制 如果Master只有一个Slave 如果Master有多个Slave 如果两个Slave票数一样呢&a…

UE5中动画重定向问题,新角色滑步,双脚不动向前后左右移动

UE5系列文章目录 我们在UE商场或者一些其他渠道的感觉非常好的人物模型和动画&#xff0c;想把他们替换到我们的工程中&#xff0c;或者把小白人替换到&#xff0c;就经常遇到动画重定向 Unreal Engine 5&#xff08;UE5&#xff09;中的动画重定向是一种强大的功能&#xff…

高校体育场管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;状态管理&#xff0c;学生管理&#xff0c;体育场管理&#xff0c;用户订单管理&#xff0c;学生订单&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;…

HTML5+JavaScript绘制彩虹和云朵

HTML5JavaScript绘制彩虹和云朵 彩虹&#xff0c;简称虹&#xff0c;是气象中的一种光学现象&#xff0c;当太阳光照射到半空中的水滴&#xff0c;光线被折射及反射&#xff0c;在天空上形成拱形的七彩光谱&#xff0c;由外圈至内圈呈红、橙、黄、绿、蓝、靛、紫七种颜色。事实…

RabbitMq消息队列(缓存加速)

然后切换yum仓库&#xff1b; 这里采用阿里的仓库&#xff1b; rm -rf /etc/yum.repos.d/* curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo …

Vitis AI 基本认知(CNN基本概念)

目录 1. 目的 2. 概念解释 2.1 计算并行度 2.2 超参数 2.3 反向传播算法 2.4 优化器&#xff08;Optimizer&#xff09; 2.5 评估指标&#xff08;Metrics&#xff09; 2.5.1 准确率、精确率、召回率 2.5.2 F1 Score 2.5.3 IoU 2.6 内存布局 2.6.1 输入 2.6.2 中间…

【eNSP模拟实验】链路聚合-手工负载模式和静态LACP模式

链路聚合介绍 简介 链路聚合&#xff08;英语&#xff1a;Link Aggregation&#xff09;是一个计算机网络术语&#xff0c;指将多个物理端口汇聚在一起&#xff0c;形成一个逻辑端口&#xff0c;以实现出/入流量吞吐量在各成员端口的负荷分担&#xff0c;交换机根据用户配置的…

再谈表的约束

文章目录 自增长唯一键外键 自增长 auto_increment&#xff1a;当对应的字段&#xff0c;不给值&#xff0c;会自动的被系统触发&#xff0c;系统会从当前字段中已经有的最大值1操作&#xff0c;得到一个新的不同的值。通常和主键搭配使用&#xff0c;作为逻辑主键。 自增长的…

分享一个拿来即用的柱状图绘制函数

分享一个自己写的柱状图绘制函数&#xff0c;可用来绘制横向的多柱状图、堆积柱状图&#xff0c;纵向的多柱状图、堆积柱状图。便于我们方便快捷的绘制相应的柱状图。该函数参数不多&#xff0c;只用于观察数据形式是足够的&#xff0c;若要绘制更加精美的柱状图&#xff0c;大…

Avnet ZUBoard 1CG开发板上手—深度学习新选择

Avnet ZUBoard 1CG 开发板上手—深度学习新选择 摘要 本文主要介绍了 Avnet ZUBoard 1CG 开发板的特性、架构、硬件单元等概念&#xff0c;并对如何使用以太网接口和串口连接开发板进行基本介绍&#xff0c;同时辅以两个应用例程演示其功能。 原文链接&#xff1a; FreakSt…

clamp靶机复现

靶机设置 设置靶机为NAT模式 靶机IP发现 nmap 192.168.112.0/24 靶机IP为192.168.112.143 目录扫描 dirsearch 192.168.112.143 访问浏览器 提示让我们扫描更多的目录 换个更大的字典&#xff0c;扫出来一个 /nt4stopc/ 目录 目录拼接 拼接 /nt4stopc/ 发现页面中有很多…