新闻详情

新闻详情

首页 / 资讯中心 / 详情

【2019-10-12】一种比较简单的替换malloc/free方法

发布时间:2026/9/28 21:00:32来源:尧图网络
【2019-10-12】一种比较简单的替换malloc/free方法
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2019-10-12 标题一种比较简单的替换malloc/free方法分类编程 / linux 标签linux·malloc·LD_PRELOAD·dlsym一种比较简单的替换malloc/free方法好久没写笔记了手都生了这里简单的笔记一种比较简单的替换malloc/free方法。实现思路为利用环境变量LD_PRELOAD在程序执行时优先加载自定义的动态链接库使用自定义的malloc/free函数替换掉linux默认的函数。首先看下代码//hello_malloc.c#includestdio.h#includestdlib.hintmain(){void*p_bufNULL;p_bufmalloc(128);if(p_buf!NULL){printf(malloc buffer:%p ,p_buf);free(p_buf);p_bufNULL;}else{printf(malloc buffer fail );}return0;}编译执行$ gcc hello_malloc.c-ohello_malloc $ ./hello_malloc malloc buffer:0x55b44be05260动态库代码// my_malloc.c#define_GNU_SOURCE#includestdio.h#includedlfcn.hstaticvoid*(*real_malloc)(size_tsize)NULL;staticvoid(*real_free)(void*)NULL;staticvoid__init(void){if(real_mallocNULL){real_mallocdlsym(RTLD_NEXT,malloc);}if(real_freeNULL){real_freedlsym(RTLD_NEXT,free);}}void*malloc(size_tsize){__init();void*p_bufreal_malloc(size);fprintf(stderr,my malloc called.size:%lu buf:%p ,size,p_buf);returnp_buf;}voidfree(void*ptr){__init();real_free(ptr);fprintf(stderr,my free called.buf:%p ,ptr);}编译执行强制链接$ gcc-shared-fPICmy_malloc.c-olibmy_malloc.so $LD_PRELOAD./libmy_malloc.so libdl.so./hello_malloc my malloc called. size:128 buf:0x55cf68157260 my malloc called. size:1024 buf:0x55cf681572f0 malloc buffer:0x55cf68157260 myfreecalled. buf:0x55cf68157260 $ ./hello_malloc malloc buffer:0x55aa37874260参考链接【 https://stackoverflow.com/questions/6083337/overriding-malloc-using-the-ld-preload-mechanism 】【 http://www.cs.cmu.edu/afs/cs/academic/class/15213-s03/src/interposition/ 】
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Substrate区块链框架:模块化开发与Wasm热升级实战指南 2026/9/28 21:55:33

Substrate区块链框架:模块化开发与Wasm热升级实战指南

1. 什么是 Substrate?它不是“基板”,而是区块链的乐高积木Substrate 这个词在中文里常被直译为“基板”或“底物”,听起来像半导体材料或者生物实验里的培养基——但放在区块链语境下,它压根儿不是物理概念,而是一套高…

阅读更多 →
Windows USB串口静默掉线的三大检测与恢复方案 2026/9/28 21:55:33

Windows USB串口静默掉线的三大检测与恢复方案

1. 这不是串口问题,是Windows USB子系统在“装死”你有没有遇到过这样的场景:一台工业现场的C#上位机,接了3个USB转串口设备(CH340、CP2102、FTDI各一个),运行一整天都好好的,结果凌晨2:17分&am…

阅读更多 →
AI批量重写存量代码:GitHub三周128个PR的工程实践拆解 2026/9/28 21:53:55

AI批量重写存量代码:GitHub三周128个PR的工程实践拆解

1. 一个反直觉的工程选择:让 AI 修改自己的源码先说一个可能和多数人直觉相悖的事实:GitHub 这个承载了全球数亿个代码仓库的平台,其自身的代码库也面临着所有老系统都会遇到的麻烦——技术债堆叠、依赖版本过于陈旧、核心服务之间的耦合越来…

阅读更多 →
辉芒微FT62F28X烧录与调试避坑指南 2026/9/28 21:53:49

辉芒微FT62F28X烧录与调试避坑指南

1. 项目概述:为什么辉芒微FT62F28X的烧录与调试值得专门拆解FMD IDE、辉芒微、FT62F28X、烧录、调试——这五个词组合在一起,不是泛泛而谈的“单片机开发入门”,而是指向一个非常具体、非常真实、也相当容易踩坑的工程现场:一款国…

阅读更多 →
AI自主提交128个PR重构83万行代码的工程方法论 2026/9/28 21:53:49

AI自主提交128个PR重构83万行代码的工程方法论

前几天看到 GitHub 那波"AI 自己给自己提交了128个PR、改了83万行代码"的消息时,我第一反应是:又来了个噱头。但把三周时间线、PR列表和自动化验证的细节翻了一遍之后,我发现真正值得聊的其实不是"AI 重写自己"这个标题&…

阅读更多 →
Superpowers实战:给Codex与Claude Code装上结构化技能库 2026/9/28 21:53:49

Superpowers实战:给Codex与Claude Code装上结构化技能库

最近一段时间我几乎逢人就推荐一个东西:给手头的 Codex(或者 Claude Code,看你习惯用哪个)装上 superpowers。你第一次听到这个名字可能会觉得夸张,但它解决的事情非常具体——默认状态下,AI 编码代理更像一…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉