C++技術問題總結-第8篇 STL內存池是怎麼實現的

    STL內存池機制,使用雙層級配置器。第一級採用malloc、free,第二級視情況採用不同策略。這種機制從heap中要空間,可以解決內存碎片問題。
1.內存申請流程圖
    簡要流程圖如下。

2.第二級配置器說明
    第二級配置器目的解決小型區塊造成的內存碎片問題。
    使用自由鏈表(free-list)技巧。主動將任何小額區塊的內存需求量上調至8的倍數。如需求30,則上調至32。
    free-list節點結構
    union obj
    {
        union obj* free_list_link;
        char client_data[];
    };
    有16個free-lists,各自管理大小分別爲8、16、24、32、40、48、56、64、72、80、88、96、104、112、120、128 bytes的小額區塊。
    申請流程如下。

    釋放流程如下。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章