使用dmalloc&valgrind检测内存泄露

本文介绍了如何使用dmalloc工具来检测C/C++程序中的内存泄漏,包括安装步骤、环境变量配置、源代码修改以及如何查看泄漏日志。虽然dmalloc对栈内存和静态内存检测有限,但它对理解和定位malloc引起的内存泄漏问题非常有帮助。
摘要由CSDN通过智能技术生成

dmalloc是一个简单易用的C/C++内存leak检查工具,以一个运行库的方式发布。dmalloc能够检查出直到程序运行结束还没有释放的内存,并且能够精确指出在哪个源文件的第几行。

dmalloc 主页: http://dmalloc.com

支持的平台:AIX, BSD/OS, DG/UX, Free/Net/OpenBSD, GNU/Hurd, HPUX, Irix, Linux, MS-DOG, NeXT, OSF, SCO, Solaris, SunOS, Ultrix, Unixware, Windoze, and even Unicos on a Cray T3E. 最新版本: 5.5.2.

安装:下载 http://dmalloc.com/releases/dmalloc-5.5.2.tgz

1. $tar zxvf dmalloc-5.5.2.Tgz  2.$cd dmalloc-5.5.2   3. $./configure  4.$make;sudo make install

设置环境变量:

terminal输入export DMALLOC_OPTIONS=log=logfile, debug=0x3(in Bash)/export DMALLOC_OPTIONS=debug 0x3,log=logfile(in Csh).或者在terminal输入dmalloc -l logfile -i 100 low,然后重新登陆用户,或者执行: source ~/.bashrc source ~/.profile

在源文件中添加下面的C代码:

#ifdef DMALLOC

#include "dmalloc.h"

#endif

值得注意的是:要在每一个.C文件里面添加,而且必须添加在所包含的头文件最后一行!

编译使用的CFLAGS: -DDMALLOC -DDMALLOC_FUNC_CHECK

如: gcc -DDMALLOC -DDMALLOC_FUNC_CHECK (-ldmalloc) dm_test.c

执行:   ./a.out

运行上面的命令会在当前目录下生成 logfile文件,打开logfile,那么哪个地方的内存leak就一目了然了。

例子:

      #include <stdio.h>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值