release版本内存泄漏的使用工具是Leakdiag

下载安装

下载地址:

链接:https://pan.baidu.com/s/1m_eJI3Iy-CNWLghpj5cyvw 
提取码:qite

Leakdiag下载之后按照默认设置安装,否则好像是会出问题的。默认安装是直接装在C盘下。
Logs文件夹里边存储的就是记录的日志,我们则是通过启动leakdiag应用程序进行检测。

LeakDiag支持5种不同的分配:

1) Virtual Memory Allocator 虚拟分配。 这种分配可追踪用VirtualAlloc/ VirtualAllocEx 等关于虚拟内存分配的内存。此时,选择LeakDiag 上[Memory allocators] 选项的“Virtual Memory Allocator”来检测。
2)Windows Heap Allocator 堆分配。这种分配可追踪NTDLL.DLL中如下函数分配的内存。
· RtlCreateHeap,
· RtlDestroyHeap,
· RtlAllocateHeap,
· RtlFreeHeap,
· RtlReAllocateHeap,
· LocalReAlloc,
· LocalFree,
· LocalAlloc,
· LocalReAlloc,
· GlobalAlloc,
· GlobalReAlloc and
· GlobalFree
此时,选择LeakDiag 上[Memory allocators] 选项的“Windows Heap Allocator”来检测。
3) MPHeap Allocator 线程局部存储(Thread Local Storage,TLS指允许一个进程的多个线程存储每个线程所独有的数据的一种Win32 机制)分配。这种分配可追踪MSDART32.DLL中如下函数分配的内存。
· MPHeapAlloc,
· MPHeapFree and
· MPHeapReAlloc
此时,选择LeakDiag 上[Memory allocators] 选项的“MPHeap Allocator”来检测。
4) COM Allocator COM分配(外部和内部)。这种分配可追踪OLE32.DLL,OLEAUT32.DLL 中如下函数分配的内存。
· CoGetMalloc,
· CoTaskMemAlloc,
· CoTaskMemFree,
· CoTaskMemRealloc,
· CRetailMalloc_Alloc,
· CRetailMalloc_Free,
· CRetailMalloc_Realloc,
· SysAllocStringLen,
· SysAllocStringByteLen,
· SysAllocString,
· SysFreeString,
· SysReAllocString and
· SysReAllocStringLen
此时,选择LeakDiag 上[Memory allocators] 选项的“COM Allocator”或“COM Internal Allocator”来检测。
5) C Runtime Allocator C运行时分配。这种分配可追踪MSVCRT.DLL中如下函数分配的内存。
· malloc,
· calloc,
· realloc,
· free,
· new,
· new[],
· delete and
· delete[]
此时,选择LeakDiag 上[Memory allocators] 选项的“C Runtime Allocator”来检测。

测试内存泄漏过程

我的工程名字叫MFCTest,然后启动调试,会出现MFCTest.exe。
然后启动Leakdiag应用程序,见上图,我们首先在application里边找到MFCTest.exe,然后在Memory allocators这里选择Heap Allocator,因为内存泄漏主要是因为程序员申请了空间忘记释放,这些内存空间都是在堆区申请,所以查看堆区就好了。先按下start,  然后在MFCTest.exe 处理正常的业务操作,觉得程序已经把我们要检测的部分都跑好了, 我们点击Log按钮,此时如果有内存泄漏,会在Logs文件夹下 生成xml文件,最后可以按stop,至此操作结束。

测试的过程是MFCTest.exe 调用testDll.dll 的memoryvld 函数内存泄漏。

TESTDLL_API void memoryvld()
{
    char *p = new char[100];
}

查看xml日志

在Logs目录里边出现了刚刚记录的xml文件;

看xml 分析可知是在f:\test\stdtest\testdll\testdll.cpp 文件的memoryvld函数 ,第76行出现问题。

再对比源码,真的是在此位置出现内存泄漏。见下图

Windows平台release版本内存泄漏检查办法相关推荐

  1. Windows平台下的内存泄漏检测

    Windows平台下的内存泄漏检测 一.使用_CrtDumpMemoryLeaks定位内存泄露 添加对应的头文件 转储内存泄漏信息 程序任意点退出 指定调试信息输出 二.定位具体内存泄露位置 内存快照 ...

  2. Linux 下几款程序内存泄漏检查工具

    Linux 下几款程序内存泄漏检查工具 chenyoubing | 发布于 2016-07-23 10:08:09 | 阅读量 93 | 无 写这篇博客的原因呢是因为自己在编写基于Nginx磁盘缓存管 ...

  3. linux c 代码分析工具,编程达人 分享几款Linux 下C/C++程序内存泄漏检查工具

    1.内存管理是否正确(因为这个程序本身开辟很多内存空间进行缓存管理,同时这个程序程序本身就是基于C/C++开发的,内存管理机制一直是程序员头痛的东西) 2.程序的健硕性如何(服务器任何程序的基本要求就 ...

  4. 常用的内存泄漏检查工具

    以下是一些常用的内存泄漏检查工具: 1. Valgrind:Valgrind是一种开源的内存调试和性能分析工具,可以检测内存泄漏.使用未初始化的内存.使用已释放的内存等问题. 2. AddressSa ...

  5. (Android Studio 3.0)Android Profiler内存泄漏检查

    前提概要 内存泄漏是常见又重要的问题,针对这个问题谷歌在Android Studio 3.0中推出了Android Profiler.笔者此篇文章主要记录一下Android Profiler在内存泄漏 ...

  6. 【内存检测系列】window下windbg内存泄漏检查

    文章目录 1.使用windbg中的umdh检查 1.1. 工具下载 1.2.环境配置 1.3.利用工具umdh(user-mode dump heap)分析 1.4.利用umdh创建heap快照 2. ...

  7. (转载)VC的内存泄漏检查

    原文链接:https://blog.csdn.net/psbeond/article/details/99546363 日期: 2016-12-20 参考:MSDN:ms-help://MS.MSDN ...

  8. 显示测试模式Windows 7 内部版本7600的解决办法

    问题描述: ========== 因为多种原因,一些用户在开机时桌面右下角会显示测试模式Windows 7 内部版本7600的水印信息.如下图: 原因: ========== 很多用户检查发现自己的W ...

  9. Linux平台下的内存泄漏检测

    Valgrind 是一款 Linux下(支持 x86.x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(C语言中的malloc和free,以及C++中的new和 ...

  10. windows客户端性能测试之内存泄露检查工具umdh.exe

    Umdh 是 Debugging Tools for Windows 中的工具,在windbg的安装目录内,UMDH主要通过分析比较进程的Heap Stack trace信息来发现内存泄露的. Umd ...

最新文章

  1. 文件监视器——Filemon
  2. 394. Decode String
  3. 第83天:jQuery中操作form表单
  4. 从IC设计来看Trace32的用途
  5. Pytorch超简单安装教程
  6. 前端面试题汇总(JS 基础篇)
  7. luogu2680 运输计划
  8. [转] python中的高效迭代器函数
  9. ovs ovn 学习资料
  10. 【渝粤题库】陕西师范大学800002 地球概论
  11. 【win10】设置电脑固定IP,解除固定IP
  12. 网易公开课 “可汗学院”《统计学》学习笔记
  13. java判断200以内的素数_java判断101-200之间的素数并输出
  14. 仿速度装机联盟程序源码,装机联盟程序源码 安装联盟程序源码
  15. 分布式微服务下的跨库查询解决思路
  16. 小型、低成本、低功耗的一次性收音机。第1部分:发射机
  17. 从麦当劳的管理谈品牌的细节塑造
  18. SpringSecurity(Web权限方案)
  19. 获取本机IP地址的方法
  20. 安全危机 破解U盘加密工具的加密原理

热门文章

  1. Linux学习---Day03
  2. 2833 奇怪的梦境 未AC
  3. M2M技术、标准与智慧城市顶层设计方法
  4. 华为2台3928千兆电口对接trunk启不来
  5. 百度云 api java_java实现百度云文字识别接口代码
  6. MixGo V1.0 发布,混合型高性能 Go 框架
  7. 使用mybatis-generator自动生成代码(附GitHub下载地址)
  8. Python的文件读取操作
  9. 看不到日志_迷之 crontab 异常:不运行、不报错、无日志?
  10. 利用CURL修改页面内容