linux下c检查内存泄漏的简单方法

先#include <mcheck.h> 
在需要检查内存泄漏的代码开始处加入 
mtrace(); 
在需要检查内存泄漏的代码结束处加入 
muntrace(); 
修改完成。 
在bash中,设置环境变量MALLOC_TRACE,例如: 
export MALLOC_TRACE=/tmp/mtrace 
然后执行你的程序。 


#include<stdio.h>


#include<string.h>


#include<stdlib.h>


#include<mcheck.h>


int main(void)


{


        char *hello;


        mtrace();


        hello = (char*) malloc(20);


        sprintf(hello,"hello world!");


        free(hello);


        return 1;


}


[*****@localhost test]$ mtrace a.out $MALLOC_TRACE   


No memory leaks.


[*****@localhost test]$ cat $MALLOC_TRACE         


= Start


@ ./a.out:[0x8048433] + 0x9da4378 0x14


@ ./a.out:[0x8048457] - 0x9da4378


 


详见:http://en.wikipedia.org/wiki/Mtrace


如果mtrace不可用安装glibc-utils的安装包,要和libc的版本号一样(通过rpm -q glibc来获取glibc的版本号),例如我的机器显示如下:


root@localhost ~]# rpm -q glibc


glibc-2.3.4-2.25


我的机器环境是CentOS4.4  (VMware),需下载glibc-utils-2.3.4-2.25.i386.rpm安装包,地址:


http://glitesoft.cern.ch/cern/slc48/i386/yum/updates/repodata/repoview/glibc-utils-0-2.3.4-2.25.html


因为安装上面数据包时提示如下错误:


[root@localhost ~]# rpm -ivh glibc-utils-2.3.4-2.25.i386.rpm


warning: glibc-utils-2.3.4-2.25.i386.rpm: V3 DSA signature: NOKEY, key ID 0c98ff9d


error: Failed dependencies:


        libgd.so.2 is needed by glibc-utils-2.3.4-2.25.i386


    Suggested resolutions:


        /home/buildcentos/CENTOS/en/4.0/i386/CentOS/RPMS/gd-2.0.28-4.4E.1.i386.rpm


所以下载libgd2-2.0.33-3aei_cl.i386.rpm安装包,地址:http://rpmfind.net/linux/rpm2html/search.php?query=libgd.so.2


最终安装顺序如下:


[root@localhost ~]# rpm -ivh libgd2-2.0.33-3aei_cl.i386.rpm


warning: libgd2-2.0.33-3aei_cl.i386.rpm: V3 DSA signature: NOKEY, key ID 0041a1fb


Preparing...                ########################################### [100%]


   1:libgd2                 ########################################### [100%]


[root@localhost ~]# rpm -ivh glibc-utils-2.3.4-2.25.i386.rpm


warning: glibc-utils-2.3.4-2.25.i386.rpm: V3 DSA signature: NOKEY, key ID 0c98ff9d


Preparing...                ########################################### [100%]


   1:glibc-utils            ########################################### [100%]


[root@localhost ~]# mtrace --version


mtrace (GNU libc) 2.3.4


Copyright (C) 2005 Free Software Foundation, Inc.


This is free software; see the source for copying conditions.  There is NO


warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Written by Ulrich Drepper <drepper@gnu.org>


祝大家顺利。也多分享一下使用mtrace的经验
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值