Linux下如何检测内存泄漏

Linux检测程序内存泄漏

1.安装valgrind:
  这是一款开源的程序内存检测工具,mtrace为内存分配函数(malloc, realloc, memalign,free)安装hook函数。这些hook函数记录内存的申请和释放的trace信息。


Valgrind详解:

Valgrind包括以下一些工具:
  • 1.Memcheck:这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够给发现开发中绝大多数的内存错误使用的情况,比如:使用未初始化
  • 2.callgrind:它主要用来检查程序中函数中调用过程中出现的问题
  • 3.cachegrind:它主要用来检查程序中缓存使用出现的问题
  • 4.Helgrind:它主要用来检查多线程中出现的竞争问题
  • 5.Massif:它主要用来检查程序中堆栈使用中出现的问题
  • 6.Extension:可以使用core提供的 功能,自己编写特定的内存调试工具
2.mtrace命令

man 3 mtrace 可以在man 手册中查看该函数



mtrace 也有对应的命令,其使用方式为:
一.将环境变量MALLOC_TRACE设置为所需输出文件的路径名

二.在需要检测的源代码中引入mcheck.h头文件
1.在分配内存之前调用mtrace(); ,一般在main函数的开头调用
2.在结束检测的地方调用muntrace(); ,一般在return之前调用
3.编译程序时需要加上-g 选项

   #include <stdio.h>
   #include <malloc.h>
   #include <mcheck.h>   
   int main()
   {
       mtrace();
       int *p = NULL;
      p =(int *)malloc(sizeof(int) * 1);
     //free(p);//未free,内存泄漏
     muntrace();
     return 0;
  }


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

结果:


  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值