文档章节

替换malloc的方法

chunquedong
 chunquedong
发布于 2014/05/31 11:19
字数 249
阅读 752
收藏 6

替换malloc和new是为了检查内存泄漏和溢出。虽然有valgrind但是并不好用。

1.封装malloc、重写new

C语言可以用宏替换malloc,例如: #define malloc cf_malloc 或者就在IDE里面手动查找替换一下。

但是C++就比较麻烦,重写全局new带来很多问题。目前我是只重写基类的new和delete。

2.GCC malloc hooks

http://www.gnu.org/savannah-checkouts/gnu/libc/manual/html_node/Hooks-for-Malloc.html

此方法无法支持多线程,deprecated

3.GCC wrap

ld中有一个选项 –wrap,当查找某个符号时,它优先先解析__wrap_symbol, 解析不到才去解析symbol。

好像对C++的new不起作用。

4.POSIX dlsym

系统的dlsym函数链接
void* malloc(size_t size)
{
    static void* (*real_malloc)(size_t) = NULL;
    if (!real_malloc)
	real_malloc = dlsym(RTLD_NEXT, "malloc");

    void *p = real_malloc(size);
    fprintf(stderr, "malloc(%d) = %p\n", size, p);
    return p;
}

5.Linux LD_PRELOAD

环境变量,mac DYLD_INSERT_LIBRARIES

LD_PRELOAD=mymalloc.so ./exe

© 著作权归作者所有

共有 人打赏支持
上一篇: 动态规划
chunquedong

chunquedong

粉丝 46
博文 131
码字总数 36559
作品 4
海淀
高级程序员
私信 提问
加载中

评论(1)

二的思维
二的思维
很厉害的样子
C++笔记——malloc基本用法

int *p; p = (int)malloc(sizeof(int) 128); //分配128个(可根据实际需要替换该数值)整型存储单元,malloc申请的是虚拟内存,并不是物理内存 //并将这128个连续的整型存储单元的首地址存储...

yushupan
2017/12/18
0
0
linux 下 C 编程和make的方法 (九、malloc 和 free的功能补充)

我们回顾一下,前面的目标,如下: 1、可通过宏的方式,打开或关闭检测,当关闭时检测代码全部在编译时被拿掉。 2、检测的打开,尽可能的少的影响代码本身的运行效率。检测代码的是否工作和编...

中山野鬼
2012/04/14
1K
0
【腾讯Bugly干货分享】聊聊苹果的Bug - iOS 10 nano_free Crash

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/hnwj24xqrtOhcjEt_TaQ9w 作者:张三华 导语 精神哥最近发现, 很多开发者在 iO...

腾讯Bugly
2016/12/12
368
0
TCMalloc优化MySQL、Nginx、Redis内存管理

TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多。TCMalloc是 google-perftools工具中的一个(gperftools四个工具...

lj2007331
2013/09/02
0
0
考你一下Xlinker和syscall

Xlinker和syscall 虽然Xlinker和syscall两种没关系,但最近在工作中一起碰到了,琢磨了半天。 下面以笔试题的形式先考考读者: 1. 自己实现一组内存分配和释放函数。 要求能够替代之前的alloc...

存储之厨
2017/12/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
10分钟前
0
0
传播正能量——《海南英才》阅读的读后感2200字

传播正能量——《海南英才》阅读的读后感2200字: 新华社记者12月8日从公安部获悉,针对自媒体“网络水军”敲诈勒索等违法犯罪活动突出问题,今年以来,公安部组织各地公安机关依法深入开展侦...

原创小博客
18分钟前
2
0
java框架学习日志-2

上篇文章(java框架学习日志-1)虽然跟着写了例子,也理解为什么这么写,但是有个疑问,为什么叫控制反转?控制的是什么?反转又是什么? 控制其实就是控制对象的创建。 反转与正转对应,正转...

白话
今天
5
0
Integer使用双等号比较会发生什么

话不多说,根据以下程序运行,打印的结果为什么不同? Integer a = 100;Integer b = 100;System.out.println(a == b);//print : trueInteger a = 200;Integer b = 200;System.out.pr...

兜兜毛毛
昨天
10
0
CockroachDB

百度云上的CockroachDB 云数据库 帮助文档 > 产品文档 > CockroachDB 云数据库 > 产品描述 开源NewSQL – CockroachDB在百度内部的应用与实践 嘉宾演讲视频及PPT回顾:http://suo.im/5bnORh ...

miaojiangmin
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部