码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-09-04 10:31:59      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   使用   strong   ar   2014   div   

    STL内存池机制,使用双层级配置器。第一级采用malloc、free,第二级视情况采用不同策略。这种机制从heap中要空间,可以解决内存碎片问题。
1.内存申请流程图
    简要流程图如下。
bubuko.com,布布扣

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的小额区块。
    申请流程如下。
bubuko.com,布布扣

    释放流程如下。

bubuko.com,布布扣

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

标签:style   blog   http   io   使用   strong   ar   2014   div   

原文地址:http://blog.csdn.net/segen_jaa/article/details/39048707

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!