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

发布于 2022-08-30 16:03:34 字数 70 浏览 20 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

恬淡成诗 2022-09-06 16:03:34

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

尘曦 2022-09-06 16:03:34
  1. 不一定所有平台都提供了 malloc 的实现
  2. 定制的 malloc 可以节省内存,提高性能
紫瑟鸿黎 2022-09-06 16:03:34

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

药祭#氼 2022-09-06 16:03:34

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

不奢求什么 2022-09-06 16:03:34

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文