STL 空间配置器
2021-08-25 23:10:25 0 举报
SGI 版本的空间配置器
作者其他创作
大纲/内容
>128字节
查找对应的调整位置:(bytes+7)&~7 【加7除以8】 【取反】
end
否
bad_alloc异常
refill重新填充空间
一级空间配置器
begin
有
是否能取一个以上的内存块
内存池
从链表的中找大块内存切割
1、内存池一开始没有内存2、内存池用来管理小块内存,减少内存碎片化3、给用户使用的都是从自由链表中取出
是
使用chunk_alloc从内存取地址空间给空闲链表
二级空间配置器
检查对应的空闲链表
失败
成功
free_list分配了16个空闲链表,大小分别为8、16、24、128
返回内存块给用户
调用malloc
如果内存不足,则抛bad_alloc异常
返回一个可用的数据块
0 条评论
回复 删除
下一页