STL源码阅读1——空间配置器

5 千字长文+ 30 张图解 | 陪你手撕 STL 空间配置器源码
参考文章错误处:第一级配置器直接使用malloc和free,第二级配置器则视情况:当配置区超过128Bytes使用一级配置器,否则采用复杂的内存池策略。
参考文章几处要点:
1 默认没有定义__USE_MALLOC所有默认二级配置器。下图的simple_alloc是封装的接口,使配置器的接口能符合STL规格
在这里插入图片描述
2 空间申请:联合体Union代表的是链表节点的结构。free_list的定义:static obj* volatile free_list[16]。说明free_list是个指针数组,每个格子里面内容是指向obj的指针。(每个格子指针都指向自由链表,链表节点有内容obj)
在这里插入图片描述
在这里插入图片描述

3 空间释放:*my_free_list总是指向第一个可用的空间。作为第二级配置器拥有配置器标准接口函数 deallocate()。该函数首先判断区块大小,大于 128bytes 就调用第一级配置器。小于 128bytes 就找出对应的 free_list,将区块回收。
在这里插入图片描述

4 内存池,书本P68配合图讲解
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值