内存检测函数-mtrace,muntrace

Linux提供了mtrace和muntrace工具来检测内存泄露。通过设置MALLOC_TRACE环境变量并结合mtrace/muntrace函数,可以在指定的日志文件中记录内存分配和释放的情况。当观察到文件中只有内存分配(+号)而没有相应的释放(-号)时,表明存在内存泄漏问题。不设置MALLOC_TRACE环境变量也可以通过export命令来实现同样的功能。
摘要由CSDN通过智能技术生成
       linux 提供 mtrace/muntrace 来检测程序是否有内存泄露 。一般来说要检测哪一段代码是否有内存泄露,就可以用这一对函数包起来。
需要添加的头文件:
#include <mcheck.h>
#include <stdlib.h>
使用示例:
char *fun()
{
    return (char *)malloc(10000000);
}
int main()
{
    setenv("MALLOC_TRACE", "output", 1);
    mtrace(); 
    while(1)
    {
        fun();
        sleep(1);
    }
    muntrace();
    return 0;
}
        其中很明显 fun() 这个函数的错误用法会导致程序出现内存泄漏,那么就可以使用这个方法来检测内存释放泄漏,其中 setenv(“MALLOC_TRACE”,”output”,1) 这条程序的意思是在本目录上产生一个 output log 文件用来保存内存检测的内容, mtrace表示开始检测,muntrace 表示结束检测。那么运行程序后,将会在 output 文件中显示检测的内容。

         如图,+号表示系统正在分配内存,-表示释放内存,但从文件中得知程序一直在申请内存,却没有释放内存,由此可以知道存在内存泄漏。

        当然,setenv(“MALLOC_TRACE”,”output”,1) 这条语句不写也没关系,那就要使用 export 命令来配置环境了,例如,在执行程序前使用 export MALLOC_TRACE=./log,那么将在本级目录生成一个名为 log 的文件用来保存检测信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九月丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值