内存泄露检查函数_mtrace()

本文介绍了如何利用_mtrace()函数进行内存泄露检查。通过设置MALLOC_TRACE环境变量或使用muntrace(),可以追踪内存分配与释放的情况,帮助定位问题。示例中展示了编译和执行带内存追踪的程序过程。
摘要由CSDN通过智能技术生成
C语言中一个malloc调用与一个free调用对应出现。
当项目足够大的时候,我们就很容易忘记free内存,或者重复free内存。
在一般Linux发行版中,有一些自带的内存检查工具可以帮助我们去检查对手动分配的内存的free情况,其中的一个工具就是mtrace。
使用mtrace之前需要在C源码中使用GNU C函数mtrace追踪记录内存的分配释放情况。
mtrace()包含在头文件mcheck.h中,与之配对的函数是muntrace(),函数原型分别为:
#include <mcheck.h>
void mtrace(void);

void muntrace(void);


调用mtrace追踪前需要设置环境变量MALLOC_TRACE,可以使用export命令也可以使用setenv函数:

export: export MALLOC_TRACE="<LogName>"

或者:

setenv: assert(!setevn("MALLOC_TRACE", "<LogName>", 1));
其中<LogName>是log文件名,用来保存mtrace生成的追踪记录。
事例中将使用export命令方法。


使用mtrace追踪内存申请与释放的流程:([]表示可选项,可有可无)

1:export MALLOC_TRACE="<LogName>"
2:在C源码中加入mtrace();
3:gcc -g <SourceFile> [-o DestinationBin]
4:执行程序
5:mtrace [DestinationBin] <LogName>


事例:

1&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值