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

平台:Windows7 64bit,编译器G++(mingw)

工具:Dr Memory,项目主页:https://code.google.com/p/drmemory/ (可能要FQ,可能会很慢,所以,可以直接按照下面官方主页给出的链接下载,我也放了一份Windows版的在百度网盘,http://pan.baidu.com/s/1qWv2tZm,这个应该肯定可以下载)

The latest versions can be directly accessed here:

2014-08-30日摘录于https://code.google.com/p/drmemory/wiki/Downloads?tm=2

用法类似于Linux下的Valgrind,非常简单

测试代码:

#include <cstdio>
int main(int argc, const char *argv[])
{
    char *s;
    s = new char[100];
    return 0;
}

用g++编译,g++ test.cpp -o test (貌似必须有-o选项指定输出文件名,用g++ test.cpp会生成a.exe,但是用drmemory会导致显示"a.exe停止工作")

执行drmemory test.exe

这样应该就会生成一个报告,可以看到Error #1: LEAK 100 direct bytes 0x00c80ea8-0x00c80f0c + 0 indirect bytes

关于微软的App Verifier,http://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx, 按照说明可以下载其中的debugging tool,安装成功后,搞了半天也没学会怎么用……

我是用mingw的工具编译和调试,g++ file.cpp -o file,生成exe,打开App Verifier,添加这个exe,执行gdb file.exe,run的时候确实看到说App Verifier enable了,但是无论是运行过程中还是运行之后都看不到log。很可能是只能和windbg工具一起使用,可能还要用微软的编译器。搜索 “App Verifier 内存泄露”可以得到很多相关文章,比如这篇文章:http://www.zzfjh.com/?p=105

参考:

https://code.google.com/p/drmemory/

http://latedev.wordpress.com/2012/05/19/valgrind-for-windows/

时间: 2024-11-08 20:15:58

C++ 检测内存泄露工具 -- Windows平台的相关文章

深度分析内存泄漏原因,使用MAT工具检测内存泄露和性能

造成内存泄漏原因: 场景一:静态变量导致的内存泄漏 例如:mainactivity中 private static context scontext: @override protected void oncreat(bundle savedinstancestate){ ............................................. scontext=this; } 泄漏点:静态变量scontext引用,activity无法正常销毁 场景二:单例模式导致的内存泄漏

vs2010使用vld检测内存泄露

cocos2d-x不仅可以做到跨平台运行,还可以做到跨平台编译调试(当然只是编译对应平台下的应用了).众所周知,cocos2d-x是用c++编写的,而c++中最让人头疼的莫过于指针和内存泄露的问题,在windows下,cocos2d-x支持在vs下开发,这样,平时写win32项目的开发工具就可以用在cocos2d-x开发上了,善哉!今天就介绍一个检测内存泄露的工具,Visual Leak Detector,简称 vld 1.安装 这一步很简单,官网已经在上面给了,直接download吧,跳过!

使用新版Android Studio检测内存泄露和性能

内存泄露,是Android开发者最头疼的事.可能一处小小的内存泄露,都可能是毁于千里之堤的蚁穴.  怎么才能检测内存泄露呢?网上教程非常多,不过很多都是使用Eclipse检测的, 其实1.3版本以后的Android Studio 检测内存非常方便, 如果结合上MAT工具,LeakCanary插件,一切就变得so easy了. 熟悉Android Studio界面 工欲善其事,必先利其器.我们接下来先来熟悉下Android Studio的界面  PHPer月薪测试题 [点击进入] 看看自己工资拿少

用Instruments检测内存泄露

用Instruments检测内存泄露 标签:Xcode 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dawn110110.blog.51cto.com/3049492/899283 IPhone上木有垃圾回收,动态申请的内存要自己记得释放,此文自己总结一下可能出现内存泄露的各种情况,以及检测方法. 内存泄露说白了,就是有这样一块动态申请的内存,但木有任何一个指针指向它. 举例来说,在C++中: MyClass * foo 

Android Studio检测内存泄露和性能

韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha [email protected] 首先需要明白一个概念, 内存泄露就是指,本应该回收的内存,还驻留在内存中. 一般情况下,高密度的手机,一个页面大概就会消耗20M内存,如果发现退出界面,程序内存迟迟不降低的话,可能就发生了严重的内存泄露. 我们可以反复进入该界面,然后点击dump java heap 这个按钮,然后Android Studio就开始干活了,下面的图就是正在dump  dump成功后会自动打开 hprof文件,

linux实用技巧:检测内存泄漏工具Valgrind

1.Valgrind简介 1.在我们编写C/C++的时候,最常见的错误之一就是内存泄露,这样的问题其实跟程序员的编程习惯密不可分.如果你在申请内存空间之后能够马上在合适的位置释放内存.会极大程度的避免内存泄漏的情况.但是人非圣贤,孰能无过.有时候我们确实忘记释放内存而导致了比较严重的错误,所以这个时候我们需要借助valgrind这个工具来判断内存泄漏. Valgrind 是一款 Linux下(支持 x86.x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(

Visual Studio(或者VC)内存泄露工具

使用简介 在写程序的过程中,难免会遇到内存泄露的时候,这个时候如果手工查找内存泄露,不说方法没有通用的,就是真的要自己手工查找也是很耗时间和精力的.诚然,我们可以借助一些工具,而且我们还会惊奇地发现这些工具很有用(比如Intel的内存泄露检测工具),但是因为往往这些工具安装比较麻烦,而我们写的程序又不是很大,所以我们或许可以找个更小巧的方法.微软就提供了这样的方法,我们只需要在程序中加入几行代码,就可以发现内存泄露的问题,然后我们就可以定位内存泄露了(自己用几行代码就可以实现,神奇!).那么如何

Linux下检测内存泄露的工具 valgrind

参考:http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html 几乎是照抄参考过来的,只不过后面自己调试一下代码. 这里主要介绍Valgrind的一些简单用法.更多详细的使用方法可以访问valgrind的主页:http://www.valgrind.org Valgrind是Julian Seward的作品.Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核,一个软件合成的CPU,和一系列的

Android性能优化第(二)篇---Memory Monitor检测内存泄露

上篇说了一些性能优化的理论部分,主要是回顾一下,有了理论,小平同志又讲了,实践是检验真理的唯一标准,对于内存泄露的问题,现在通过Android Studio自带工具Memory Monitor 检测出来.性能优化的重要性不需要在强调,但是要强调一下,我并不是一个老司机,嘿嘿!没用过这个工具的,请睁大眼睛.如果你用过,那么就不用在看这篇博客了. 先看一段会发生内存泄露的代码 public class UserManger { private static UserManger instance;