文档章节

替换malloc的方法

chunquedong
 chunquedong
发布于 2014/05/31 11:19
字数 249
阅读 614
收藏 6
点赞 0
评论 1

替换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

粉丝 45
博文 127
码字总数 35560
作品 4
海淀
高级程序员
加载中

评论(1)

二的思维
二的思维
很厉害的样子
【腾讯Bugly干货分享】聊聊苹果的Bug - iOS 10 nano_free Crash

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

腾讯Bugly
2016/12/12
368
0
linux 下 C 编程和make的方法 (九、malloc 和 free的功能补充)

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

中山野鬼
2012/04/14
1K
0
第9篇 #define的使用与代码运行检测方法 (中)

鬼话:说测试,怎么说到一个宏的设计上来了,测试方法,讲究方法,我们将代码可以看作和存储有关,和逻辑有关,和存储及逻辑均有关三种。除了最后一个有点难办,第二个,仅和逻辑有关,存在不...

中山野鬼
2012/11/29
2.1K
9
C++笔记——malloc基本用法

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

yushupan
2017/12/18
0
0
ACE内存映射技术

内存映射文件 多个操作系统平台都提供了内存映射文件,这是一个简单的将数据结构保存到文件中的机制。同时由于32位操作系统的进程虚拟内存最大只能4GB,用内存映射文件的方式就可以突破这个限...

长平狐
2012/08/28
306
0
一种避免 iOS 内存碎片的方法

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:QQ音乐技术团队 一、引言 在和服务器传输文本的时候,可能会因为某一个字符的编码格式不同、少了一个字节、多了一个字节等原...

腾讯云社区
2017/10/25
0
0
TCMalloc优化MySQL、Nginx、Redis内存管理

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

lj2007331
2013/09/02
0
0
Varnish 3.x 安装配置调优及理论知识

Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang (http://www.vg.no) 使用3台Varnish代替了原来的12台squid,性能居然比以前更好。 Varnish 的作者Poul-Henning Kamp...

Jean
2014/01/03
0
0
考你一下Xlinker和syscall

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

存储之厨
2017/12/29
0
0
垃圾回收器--bdw-gc

一个保守型垃圾回收器,可以用来替换C 的malloc或C++的new。 很多软件都使用该垃圾回收器,如:libnode,libj等。

汉克斯
2013/08/26
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
49分钟前
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
今天
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
今天
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
1
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部