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

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

阿神
阿神

闭关修行中......

全部回覆(5)
伊谢尔伦

是不通用的
要麼暴露記憶體申請釋放的函數, 由模組中申請記憶體.
第二種方法就windows上的做法, 內存由用戶自己管理, 但是內存的大小可以通過函數查詢的. 很多時候windows的API都得很蛋疼的調用兩遍的

黄舟
  1. 不一定所有平台都提供了 malloc 的實作
  2. 定制的 malloc 可以節省內存,提高性能
阿神

很多函式庫有記憶體池的實作 普通的malloc就得封裝了,標準函式庫的malloc之類實作不一定最佳,所以有jmalloc之類的實現,而且效率更高。標準的malloc寫法,除了嵌入式之類的系統都是通用的。基本上C的標準函式庫都需要實現這些。

巴扎黑

例如要偵測記憶體外洩的時候,需要在 malloc 上加上記錄。

阿神

頻繁呼叫malloc會產生記憶體碎片, 還有記憶體外洩的風險.

解決方法就是内存池: 事先申請大內存, 自己管理這塊內存, 方便調試, 還方便計算用了多少內存.

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!