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

 mobiledu2502857147 发布于 2022-11-07 08:45

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

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

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

    2022-11-12 01:38 回答
  • 比如要检测内存泄露的时候,需要在 malloc 上加记录。

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

    2022-11-12 01:38 回答
    1. 不一定所有平台都提供了 malloc 的实现
    2. 定制的 malloc 可以节省内存,提高性能
    2022-11-12 01:38 回答
  • 是不通用的
    要么暴露内存申请释放的函数, 由模块中申请内存.
    第二种方法就windows上的做法, 内存由用户自己管理, 但是内存的大小可以通过函数查询的. 很多时候windows的API都得很蛋疼的调用两遍的

    2022-11-12 01:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有