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的小额区块。
    申请流程例如以下。

    释放流程例如以下。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值