您的位置:首页 > 编程语言 > C语言/C++

C++技术问题总结-第8篇 STL内存池是怎么实现的

2014-09-04 10:15 459 查看
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的小额区块。

申请流程如下。



释放流程如下。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: