linux - 为什么有的库中, 内存申请, 释放等函数要做成可修改的, 比如curl. malloc, realloc这种不是通用的吗?
阿神
阿神 2017-04-17 12:07:40
[Linux讨论组]

为什么有的库中, 内存申请, 释放等函数要做成可修改的, 比如curl. malloc, realloc这种不是通用的吗?

阿神
阿神

闭关修行中......

全部回复(5)
伊谢尔伦

是不通用的
要么暴露内存申请释放的函数, 由模块中申请内存.
第二种方法就windows上的做法, 内存由用户自己管理, 但是内存的大小可以通过函数查询的. 很多时候windows的API都得很蛋疼的调用两遍的

黄舟
  1. 不一定所有平台都提供了 malloc 的实现
  2. 定制的 malloc 可以节省内存,提高性能
阿神

很多库有内存池的实现 普通的malloc就得封装了,标准库的malloc之类实现不一定最佳,所以有jmalloc之类的实现,而且效率更高。标准的malloc写法,除了嵌入式之类的系统都是通用的。基本上C的标准库都需要实现这些。

巴扎黑

比如要检测内存泄露的时候,需要在 malloc 上加记录。

阿神

频繁调用malloc会产生内存碎片, 还有内存泄露的风险.

解决办法就是内存池: 事先申请大内存, 自己管理这块内存, 方便调试, 还方便计算用了多少内存.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号