linux中内存泄漏的检测(二)定制化的malloc/free

本文介绍了如何在Linux中通过GCC的wrap选项来定制malloc/free,以实现内存泄漏检测。这种方法不需要修改产品代码,只需在链接时使用特定选项,并提供包装函数。文章详细阐述了wrap功能的工作原理,以及使用步骤和优缺点,但指出这种方法仅适用于C语言,且不能提供泄漏的具体信息和位置。
摘要由CSDN通过智能技术生成

《linux中内存泄漏的检测(一)最简单的方法》介绍了最简单的内存泄漏检测方法,这种方法虽然简单,却有很多现实的问题,导致它不能用于实际的生产中。

直接使用这种方法肯定是不现实的,因为:

(1)把整个工程里所有调用malloc/free的地方都改成my_malloc/my_free,代码改动很大。

(2)通常动态库和静态库的代码是没有权限修改的。

今天就来解决这个问题,动态地决定让程序使用自己的还是系统的内存管理接口。

wrap选项

不希望修改产品代码,那么用于申请/释放内存的接口还是malloc/free。
又想在接口中增加计数的功能,就要再实现一套用于申请/释放内存的接口。新接口不能和malloc/free重名。这太矛盾了。

如果能自己定制一个malloc/free就好了。

幸好GCC也想到了这一点,给我们提供了wrap选项。
这是man ld得到的说明:

–wrap=symbol

Use a wrapper function for symbol. Any undefined reference to symbol will be resolved to __wrap_symbol. Any undefined reference to __real_symbol will be resolved to symbol.

This can be used to provide a wrapper for a system function. The wrapper function sh

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值