自由表
自由表(英語:free list)[1]是一種用來實現特定動態內存分配方案的數據結構,也稱自由列表。自由表的核心原理是將若干未分配的內存塊用鍊表連接起來,將未分配區域的第一個字作為指向下一個未分配區域的指針使用。自由表非常適合用來實現內存池,因為內存池中對象的大小都是相同的。
用自由表實現內存的分配和回收非常簡單:回收內存時只需將內存塊鏈入自由表;分配時也只需從自由表的一端取下即可直接使用。如果內存塊的大小不一,則分配前還需要在自由表中搜索足夠大的內存塊,可能有一定的額外消耗。
因為自由表使用了鍊表結構,所以也繼承了它的劣勢:訪問局部性低下,難以利用緩存。
另見
參考資料
- ^ freelist - 自由表. 國家教育研究院雙語詞彙、學術名詞暨辭書資訊網. [2018-07-13]. (原始內容存檔於2018-09-10).