Linux mtrace命令检测内存泄漏

*这篇来学习一下Linux中的一个命令——mtrace,它是怎么用的呢?一起来看看。。。→_→*

内存泄漏代码

#include <stdio.h>

int main()
{
    int *p = NULL;
    p = (int *)malloc(sizeof(int) * 1);

    //free(p);
    return 0;
}

这代码太简单了。。。不解释。。

mtrace命令的使用

  • 将环境变量MALLOC_TRACE设置为所需输出文件的路径名
    mtrace设置环境变量

  • 在源代码中引入mcheck.h头文件

#include <mcheck.h>
  • 在分配内存之前调用mtrace(); ,一般在main函数的开头调用

  • 在结束检测的地方调用muntrace(); ,一般在return之前调用

  • 编译程序时需要加上-g 选项,
    mtrace源代码编译

  • 内存泄漏信息将在MALLOC_TRACE环境变量指定的文件中报告,需要使用mtrace命令将信息转换

//mtrace <exec_file_name> <malloc_trace_filename>
mtrace text meminfo.txt
Memory not freed:
-----------------
   Address     Size     Caller
0x08049910      0x4  at /home/Zhang/Desktop/Linux/20170830/test.c:10

源代码

  1 #include <stdio.h>
  2 #include <malloc.h>
  3 #include <mcheck.h>
  4 
  5 int main()
  6 {
  7     mtrace();
  8     int *p = NULL;
  9 
 10     p = (int *)malloc(sizeof(int) * 1);
 11 
 12     //free(p);
 13 
 14     muntrace();
 15     return 0;
 16 }

*是不是很简单。。。嗯。。。→_→*

猜你喜欢

转载自blog.csdn.net/kongkongkkk/article/details/77716548