STL内存池机制,使用双层级配置器。第一级採用malloc、free,第二级视情况採用不同策略。
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的小额区块。
申请流程例如以下。
这样的机制从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的小额区块。
申请流程例如以下。
释放流程例如以下。