1. 下载 vld
https://github.com/KindDragon/vld


  1. 安装 vld 后记录安装目录
C:\Program Files (x86)\Visual Leak Detector
  1. 拷贝 bin目录下文件到当前源码目录中

    拷贝至

    将 头文件和lib库引入工程文件
    放入源码目录 上一层 和 .sln 一个文件夹
    Include/vld 文件夹
    Lib 文件夹

    头文件,注意 vld 需要在 #include <afxwin.h> 头文件之前使用
#define VLD_FORCE_ENABLE
#include "../Include/vld/vld.h"
#pragma comment(lib, "../lib/vld.lib")

在main函数中使用

int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR    lpCmdLine,int       nCmdShow)
{if(!AfxWinInit(::GetModuleHandle(NULL),NULL,::GetCommandLine(),0)){return 1;}// 使用 vld 宏开启VLDGlobalEnable();VLDReportLeaks();// 让 mfc 出现命令行窗口方便调试AllocConsole(); freopen("CONIN$", "r", stdin); freopen("CONOUT$", "w", stdout);.... 编写代码// 关闭 vld 使用VLDGlobalDisable();
}

关闭程序前,程序会卡死,然后所有的 vld 记录会在 输出(调试)中

vld 使用更多方式:

VLD支持多样化的检测设置接口,具体如下:1.       单一线程的内存泄漏排查1) VLDDisable   禁用当前线程的内存泄漏检测2) VLDEnable    启用当前线程的内存泄漏检测3) VLDRestore   还原当前线程的内存泄漏检测设置到上一个状态利用这个方法,可以做到只检测特定线程的内存泄漏,也可以排除此特定线程的内存泄漏检测。2.       整个程序的内存泄漏排查1)      VLDGlobalDisable2)      VLDGlobalEnable利用这个方法,可以做到只检测特定阶段的内存泄漏,比如程序启动过程中的内存泄漏,不进行检测,只能当程序初始化完成后,再启动检测。3.       针对特定模块来使用内存泄漏排查1)          VLDEnableModule2)  VLDDisableModule4.       获取相关的泄漏信息#define VLDReportLeaks() (0)  打印整个程序当前执行此函数前的内存泄漏#define VLDReportThreadLeaks() (0) 打印特定线程在执行此函数前的内存泄漏#define VLDGetLeaksCount() (0)      获取整个程序当前的内存泄漏数量#define VLDGetThreadLeaksCount() (0)  获取指定线程当前的内存泄漏数量#define VLDMarkAllLeaksAsReported()      标记当前的泄漏为已经报告过,后续不再报告#define VLDMarkThreadLeaksAsReported(a)  标记指定线程当前的泄漏为已经报告过,后续不再报告5.  其他高级功能#define VLDRefreshModules()           刷新加载的模块列表,以便针对动态加载的模块进行内存泄漏检查 #define VLDGetOptions() (0)          获取检测的设置 (不太清楚)#define VLDGetReportFilename(a)      获取泄漏报告生成的文件夹名#define VLDSetOptions(a, b, c)       设置检测选项#define VLDSetReportHook(a, b)      自定义的内存泄漏报告回调函数(不清楚)#define VLDSetModulesList(a)        设置要包含或者排除泄漏检测的模块列表#define VLDGetModulesList(a, b) (FALSE)  获取检测中的模块列表#define VLDSetReportOptions(a, b)#define VLDResolveCallstacks() (0)更多信息直接查看官方文档及代码注释。三. 如何避免内存泄漏1.      避免堆内存申请2.      使用智能指针来管理堆内存的申请与释放 这里备份留存,原文链接:https://blog.csdn.net/tragicguy/article/details/54311649

其它:

vld 介绍说支持 2008 — 2015 的vs,但是实际测试中,我使用 vs2017 也是正常使用的

在vs中使用 vld 进行内存泄漏检测相关推荐

  1. C++中基于Crt的内存泄漏检测

    尽管这个概念已经让人说滥了 ,还是想简单记录一下, 以备以后查询. #ifdef _DEBUG #define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FI ...

  2. qt5使用内存检测工具vld查看内存泄漏

    什么是vld? Visual Leak Detector是一款用于Visual C++的免费的内存泄露检测工具.相比较其它的内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点: 1. 可以得到 ...

  3. OpenCV中的内存泄漏检测

    转自:http://chaishushan.blog.163.com/blog/static/130192897200911685559809/ 内存泄漏时程序开发中经常遇到的问题. 而且出现内存泄漏 ...

  4. 5 个 Android 开发中比较常见的内存泄漏问题及解决办法

    Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要再 ...

  5. 5种避免C#.NET中因事件造成内存泄漏的技术

    原文来自互联网,由长沙DotNET技术社区编译. 5种避免C#.NET中事件造成的内存泄漏的技术 C#(通常是.NET)中的事件注册是内存泄漏的最常见原因.至少从我的经验来看.实际上,我从事件中看到了 ...

  6. [转载] 解析Java的JNI编程中的对象引用与内存泄漏问题

    参考链接: Java对象如何存储在内存中 JNI,Java Native Interface,是 native code 的编程接口.JNI 使 Java 代码程序可以与 native code 交互 ...

  7. jni jvm 内存泄漏_解析Java的JNI编程中的对象引用与内存泄漏问题

    JNI,Java Native Interface,是 native code 的编程接口.JNI 使 Java 代码程序可以与 native code 交互--在 Java 程序中调用 native ...

  8. VC++6.0中内存泄漏检测 转

    最近看了周星星 Blog 中的一篇文章:"VC++6.0中内存泄漏检测",受益匪浅,便运行其例子代码想看看 Output 窗口中的输出结果,可惜怎么弄其输出都不是预期的东西,郁闷了 ...

  9. 解析Java的JNI编程中的对象引用与内存泄漏问题

    JNI,Java Native Interface,是 native code 的编程接口.JNI 使 Java 代码程序可以与 native code 交互--在 Java 程序中调用 native ...

最新文章

  1. 获取本年、本月、本周时间范围_为什么“增值税期末留抵税额本年累计数”很快就被废止了...
  2. ACMNO.34 C语言-格式输出 请设计输出实数的格式,包括:⑴一行输出一个实数;⑵一行内输出两个实数;⑶一行内输出三个实数。实数用6.2f格式输出。
  3. Ural 1018 (树形DP+背包+优化)
  4. Twitter-Snowflake,64位自增ID算法详解
  5. angularJS 自定义元素和属性
  6. VHDL中的分辨函数
  7. “约见”面试官系列之常见面试题第三十八篇之js常见的继承方式(建议收藏)
  8. 报告:5G 网络切片可能会给不法分子留下漏洞!
  9. Mybatis mapper代理Dao开发
  10. python下:用 matplotlib.pyplot 显示 Opencv 读取的图像
  11. java的中文源代码
  12. 导论II大作业提交-辩论计时器代码
  13. Dmp文件导入(Imp命令)
  14. 去除桌面图标蓝底的方法
  15. Elasticsearch之静态模板
  16. 【Python从0到1】第三篇:基础语法(三)
  17. 3维线程格 gpu_GPU的线程模型和内存模型
  18. 【宝藏级构建桌面应用程序】使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序
  19. 简单对象协议(SOAP)简介
  20. DataGrid_单击_双击_editable

热门文章

  1. 计算机网络 研究生入学考试,中南大学研究生入学考试 《计算机网络》试题
  2. 【软件工程基础复习整理】第四章需求分析(2)数据流建模
  3. 【C语言入门】ZZULIOJ 1036-1040
  4. C#使用ODBC连接MySql数据库
  5. ISO9001认证多少钱?
  6. SCPI 可编程仪器标准命令
  7. 苹果6s要下岗了,预算5000给推荐一款手机呗?
  8. namp命令行操作及kali配置
  9. LabVIEW之MSComm控件注册
  10. python远程连接timesten