【cpp/c++ summary 工具】 vld(Visual Leak Detector)windows 内存泄漏检测工具

news2024/10/2 20:09:13
  • Visual Leak Detector,这是一个用于检测C/C++程序内存泄漏的工具。它可以在开发Windows应用程序时发现并修复内存泄漏的问题。

安装VLD

  • https://kinddragon.github.io/vld/
  • https://github.com/KindDragon/vld
    在这里插入图片描述

运行程序

在项目中包含头文件
  • 项目中,通常需要在main.cpp或相应的入口点文件中包含vld.h头文件。这样可以在程序启动时初始化VLD。
// main.cpp 或者项目的入口文件
#include "vld.h"
链接VLD库
  • 如果你使用的是Visual Studio,可以在项目属性中进行如下操作:
  1. 右键打开项目属性页面 (PropertiesAlt + Enter)。
  2. 转到VC++目录 -> 包含目录 添加VLD库的位置。
  3. 转到VC++目录 -> 库目录添加VLD.lib所在目录位置。

在这里插入图片描述

#include "vld.h"  // 引入VLD头文件
#include <iostream>

int main() {
    std::cout << "Starting program..." << std::endl;

    int* p = new int(5);  // 分配内存
    // delete p;             // 释放内存

    std::cout << "Program finished." << std::endl;

    return 0;
}
  • 构建并运行程序。VLD会在程序退出时报告内存泄漏情况。
“testvld.exe”: 已加载“C:\Users\audit\Documents\Visual Studio 2010\Projects\testvld\Debug\testvld.exe”,已加载符号。
“testvld.exe”: 已加载“C:\Windows\SysWOW64\ntdll.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\kernel32.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\KernelBase.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\msvcp100d.dll”,已加载符号。
“testvld.exe”: 已加载“C:\Program Files (x86)\Visual Leak Detector\bin\Win32\vld_x86.dll”,已加载符号。
“testvld.exe”: 已加载“C:\Windows\SysWOW64\msvcr100d.dll”,已加载符号。
“testvld.exe”: 已加载“C:\Windows\SysWOW64\advapi32.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\msvcrt.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\sechost.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\bcrypt.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\rpcrt4.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Program Files (x86)\Visual Leak Detector\bin\Win32\dbghelp.dll”,Cannot find or open the PDB file
Visual Leak Detector read settings from: C:\Program Files (x86)\Visual Leak Detector\vld.ini
Visual Leak Detector Version 2.5.1 installed.
线程 'Win32 线程' (0x3328) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x2144) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x29dc) 已退出,返回值为 0 (0x0)。
WARNING: Visual Leak Detector detected memory leaks!
---------- Block 1 at 0x014248D8: 4 bytes ----------
  Leak Hash: 0xFDB1D2BB, Count: 1, Total 4 bytes
  Call Stack (TID 4060):
    MSVCR100D.dll!operator new()
    c:\users\audit\documents\visual studio 2010\projects\testvld\testvld\main1.cpp (7): testvld.exe!main() + 0x7 bytes
    f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (555): testvld.exe!__tmainCRTStartup() + 0x19 bytes
    f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c (371): testvld.exe!mainCRTStartup()
    KERNEL32.DLL!BaseThreadInitThunk() + 0x19 bytes
    ntdll.dll!RtlInitializeExceptionChain() + 0x6B bytes
    ntdll.dll!RtlClearBits() + 0xBF bytes
  Data:
    05 00 00 00                                                  ........ ........


Visual Leak Detector detected 1 memory leak (40 bytes).
Largest number used: 40 bytes.
Total allocations: 40 bytes.
Visual Leak Detector is now exiting.
程序“[8448] testvld.exe: 本机”已退出,返回值为 0 (0x0)。

解决内存泄漏

  • 根据VLD提供的报告,检查代码中的内存分配和释放逻辑,以确保所有的newmalloc都有对应的deletefree调用。
#include "vld.h"  // 引入VLD头文件
#include <iostream>

int main() {
    std::cout << "Starting program..." << std::endl;

    int* p = new int(5);  // 分配内存
    // delete p;             // 释放内存

    std::cout << "Program finished." << std::endl;

    return 0;
}
  • 输出:No memory leaks detected.
“testvld.exe”: 已加载“C:\Users\audit\Documents\Visual Studio 2010\Projects\testvld\Debug\testvld.exe”,已加载符号。
“testvld.exe”: 已加载“C:\Windows\SysWOW64\ntdll.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\kernel32.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\KernelBase.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\msvcr100d.dll”,已加载符号。
“testvld.exe”: 已加载“C:\Windows\SysWOW64\msvcp100d.dll”,已加载符号。
“testvld.exe”: 已加载“C:\Program Files (x86)\Visual Leak Detector\bin\Win32\vld_x86.dll”,已加载符号。
“testvld.exe”: 已加载“C:\Windows\SysWOW64\advapi32.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\msvcrt.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\sechost.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\bcrypt.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Windows\SysWOW64\rpcrt4.dll”,Cannot find or open the PDB file
“testvld.exe”: 已加载“C:\Program Files (x86)\Visual Leak Detector\bin\Win32\dbghelp.dll”,Cannot find or open the PDB file
Visual Leak Detector read settings from: C:\Program Files (x86)\Visual Leak Detector\vld.ini
Visual Leak Detector Version 2.5.1 installed.
线程 'Win32 线程' (0xcd0) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x3ca0) 已退出,返回值为 0 (0x0)。
线程 'Win32 线程' (0x3738) 已退出,返回值为 0 (0x0)。
No memory leaks detected.
Visual Leak Detector is now exiting.
程序“[10956] testvld.exe: 本机”已退出,返回值为 0 (0x0)。

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

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

相关文章

Host文件及switchhosts for mac下载

一、概念 hosts 是一个文本文件&#xff0c;用来将主机名或域名映射到对应的 IP 地址。 这个文件通常位于 /etc/hosts&#xff08;在 Unix-like 系统上&#xff0c;包括 macOS 和 Linux&#xff09; 可以在终端输入sudo vim /etc/hosts来打开 或 C:\Windows\System32\driver…

Web安全 - 路径穿越(Path Traversal)

文章目录 OWASP 2023 TOP 10导图定义路径穿越的原理常见攻击目标防御措施输入验证和清理避免直接拼接用户输入最小化权限日志监控 ExampleCode漏洞代码&#xff1a;路径穿越攻击案例漏洞说明修复后的安全代码代码分析 其他不同文件系统下的路径穿越特性Windows系统类Unix系统&a…

MDM监管锁系统ABM证书与MDM证书申请与使用

MDM证书与ABM证书申请与维护 基础知识 监管锁系统运行需要两个证书 分别为ABM证书 与 MDM证书,在别人平台购买的监管锁只会让你上传自己的ABM证书而MDM证书则是共用一个平台自己的MDM证书&#xff0c;而MDM证书才是控制手机的关键,如果MDM证书被封禁,那么所有的设备将无法受到…

设置Android studio或者IEDA自动导包

File --> Setting --> Editor --> Auto Import &#xff0c;如果是java&#xff0c;就把java对应的勾选上

【JavaScript】Bit:组件驱动开发的新时代

Bit 是一个现代化的开发工具&#xff0c;帮助开发者通过组件驱动的方式进行软件开发和协作。它旨在解决开发大型系统时的常见挑战&#xff0c;如组件的复用性、独立性和协作性问题。通过 Bit&#xff0c;开发团队可以更加轻松地共享、管理和维护可复用的代码组件&#xff0c;同…

Mybatis-Flex使用

说明&#xff1a;MyBatis-Flex 是一个优雅的 MyBatis 增强框架&#xff0c;它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库&#xff0c;其内置的 QueryWrapper^亮点 帮助我们极大的减少了 SQL 编写的工作的同时&#xff0c;减少出错…

JSR303微服务校验

一.创建idea 二.向pom.xml添加依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.7.RELEASE</version></parent><properties><java.vers…

Linux内核对连接的组织和全连接队列

一、Linux内核的组织形式 1.1 描述“连接”的结构 TCP协议的特点是面向连接&#xff0c;一个服务端可能会被多个客户端连接&#xff0c;那这些连接也一定会被操作系统组织起来&#xff0c;接下来我们谈一谈在Linux内核中是如何管理这些连接的。 既然要管理这些连接&#xff0c…

vue3 升级实战笔记

最近要将公司项目的移动端进行 vue3 的升级工作&#xff0c;就顺便记录下升级过程。 项目迁移的思路 我的想法是最小改动原则。 从 vue2.x 升级到 vue3&#xff0c;且使用 vue3 的 选项式 API。构建工具要从 vue-cli&#xff08;webpack&#xff09;升级到 vite。路由需要升级到…

软件测试面试八股文(含答案+文档)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Part1 1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师…

17.反射与动态代理

目录 1.反射的概述 2.学习反射到底学什么&#xff1f; 3.字节码文件和字节码文件对象 4.获取字节码文件对象的三种方式 5.Class类中用于获取构造方法的方法 6.Class类中用于获取成员变量的方法 7.Class类中用于获取成员方法的方法 8.反射和配置文件结合动态获取的练习与利用反…

企业在数字化转型过程中如何确保数据安全性?

在数字化转型过程中&#xff0c;确保数据安全性是至关重要的。以下是一些关键措施&#xff0c;可以帮助企业在数字化转型中保障数据安全&#xff1a; 一、建立健全数据安全管理体系 制定完善的数据安全政策、制度和流程&#xff1a;明确数据安全管理的责任部门和人员&#xff…

stm32四足机器人(标准库)

项目技术要求 PWM波形的学习 参考文章stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)_ttl pwm 驱动激光头区别-CSDN博客 舵机的学习 参考文章 stm32 TIM输出比较(PWM驱动LED呼吸灯&&PWM驱动舵机&&PWM驱动直流电机)…

前端学习第一天笔记 HTML5 CSS初学以及VSCODE中的常用快捷键

前端学习笔记 VsCode常用快捷键列表HTML5标题标签标签之段落、换行、水平线标签之图片图片路径详解标签之超文本链接标签之文本列表标签之有序列表列表标签之无序列表标签之表格表格之合并单元格Form表单表单元素文本框 密码框 块元素与行内元素&#xff08;内联元素&#xff0…

【09】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Class类基础全解(属性、方法、继承复用、判断)

序言&#xff1a; 本文详细讲解了关于我们在程序设计中所用到的class类的各种参数及语法。 笔者也是跟着B站黑马的课程一步步学习&#xff0c;学习的过程中添加部分自己的想法整理为笔记分享出来&#xff0c;如有代码错误或笔误&#xff0c;欢迎指正。 B站黑马的课程链接&am…

横排文字、图层蒙版-1(2024年09月30日)

2024年09月30日 记录_导读 2024年09月30日 10:13 关键词 优惠券 设计 图层 背景 元素 调整 画笔工具 颜色 大小 位置 复制 移动 添加涂层 多选 显示 PS 元素文件 隐藏 使用规则 Logo 全文摘要 通过在Photoshop中精心操作图层&#xff0c;包括复制、移动和调整设置&#xf…

自动驾驶系列—自动驾驶发展史介绍

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

CMU 10423 Generative AI:lec13/13.5(text-to-image models:三大类方法、评估标准、图像编辑原理)

1 文章目录 1 lec13和lec13.5概述2 Text-to-Image Generation 概念、主要方法、挑战、发展历程1. **基本概念**2. **主要技术方法**2.1. **生成对抗网络&#xff08;GAN&#xff09;**2.2. **自回归模型&#xff08;Autoregressive Models&#xff09;**2.3. **扩散模型&#x…

声纳技术24.1.19声纳定向方法

一、基本原理 本质&#xff1a;利用声程差和相位差 声程差&#xff1a; 时间差&#xff1a; 相位差&#xff1a; 二、最大值测向 原理&#xff1a;接收到的信号幅度最大时换能器或基阵的指向性来测量目标方位 优点&#xff1a;简单&#xff0c;利用人耳可判别目标性质&a…

单链表的增删改查(数据结构)

之前我们学习了动态顺序表&#xff0c;今天我们来讲一讲单链表是如何进行增删改查的 一、单链表 1.1、单链表概念 概念&#xff1a;链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 1.2、链表与顺序表的…