Linux mtrace命令检测内存泄漏

来源:互联网 发布:淘宝怎么上咸鱼网 编辑:程序博客网 时间:2024/04/29 12:56

*这篇来学习一下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     Caller0x08049910      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 }

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

原创粉丝点击