2011-10-15 22 views

回答

7

該信息(如分配的大小)保存在內存分配器本身中。

在內部,有一些數據結構可以保存所有活動內存分配的列表,它們的大小和地址。它的工作原理相當複雜,因爲有很多不同的內存分配算法適合不同的目的和分配大小。

通常情況下,大小存儲爲固定偏移量,正好低於malloc()返回的地址,但這只是一個實現細節。

3

一個比較常見的方法是在返回一個指向所分配內存其餘部分的指針之前,通過sizeof(size_t)增加分配並在開始時存儲長度。釋放記憶只需要看看藏起來的長度。

相關問題