2017-01-23 48 views
0

我運行使用jemalloc作爲內存分配器哪個預分割大塊成預定義尺寸的小塊(C++程序即1,2,4,8,.. 。字節)獲取每存儲器分配箱的尺寸在jemalloc

即使我要求110個字節的存儲器分配,它返回與128個字節容量的存儲器。

在我的程序,我跟蹤動態分配的存儲器(具有高度多樣化的大小)的量,並限制線程的存儲器分配,以避免內存不足崩潰。

然而,由於要求的尺寸,並給予實際尺寸之間的差異,我不能準確計算動態分配的字節的數量。

是否有接收請求大小作爲輸入,並提供了一個實際的分配大小作爲輸出的任何「jemalloc」 API?

感謝

回答

1

按照文檔,就可以使用malloc_usable_size()和傳遞您的分配指針。

malloc_usable_size函數返回由ptr指向的分配的可用大小。返回值可能大於分配期間請求的大小。 malloc_usable_size函數不是in-place realloc機制;相反,它只是作爲一種內省目的的工具。所請求的分配大小與malloc_usable_size報告的大小之間的任何差異都不應該依賴,因爲此類行爲完全取決於實現。

更多信息:

+0

是的,我已經閱讀它。然而它說:「所請求的分配大小與malloc_usable_size報告的大小之間的任何差異不應該依賴,因爲這樣的行爲完全取決於實現。」所以我懷疑它 – syko