<为爱走天涯>

导航

mtrace跟踪内存泄漏

mtrace是用来跟踪内存泄漏的功能开关,muntrace是用来关闭地它的跟功能。

在使用mtrace时要在环境变量中添加宏MALLOC_TRACE,宏的值为生成的内存跟踪文件名。

#include <stdio.h>
#include <stdlib.h>
#include <mcheck.h>

int main()
{
    mtrace();
    char *ptr = NULL;
    for(int i =0;i<2;i++)
    {
        int * p  = (int*) malloc(sizeof(int));
        p[1] = 1;
    }
        muntrace();
    printf("%s", ptr);
    return 0;
}


使用gcc编译代码,再export MALLOC_TRACE到环境变量中,然后执行输出的可执行程序,之后你会看到当前环境下会产生与MALLOC_TRACE定义的名称相同的文件名,使用perl脚本
mtrace解析内存使用情况:mtrace {可执行程序} $MALLOC_TRACE

在网上我还看到一些人用malloc头文件中定义的勾子函数来跟踪,这种方法也很不错,就是用起来有点费事。有机会我也会尝试尝试。

学一点,收获一点。学到的都是自己的!

posted on 2013-04-22 22:41  <为爱走天涯>  阅读(170)  评论(0)    收藏  举报