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>