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头文件中定义的勾子函数来跟踪,这种方法也很不错,就是用起来有点费事。有机会我也会尝试尝试。
学一点,收获一点。学到的都是自己的!
浙公网安备 33010602011771号