STL空间配置器调用过程
2016-04-06 22:17:48 5 举报
STL空间配置器调用过程,实现过程
作者其他创作
大纲/内容
yes
系统堆内部也没有空间可用,调用一级配置器,通过handler机制控制程序
在内部自由链遍历,释放空闲以补充内存池
no
allocate(n)
freelist+FREELISTINDEX(n)
失败
③
refill()
链接自由链
byte_left=20*n
返回数据
自由链中空间足够?
二级空间配置
④no
获取自由链中位置
start
从内存池取空间给freelist
malloc_alloc::allocte(n)
这里是找比n大的结点,且只释放一块空间
利用内存池空间填充自由链
n128
将byte_left链接到合适的自由链中
malloc申请成功
调用malloc(n)
oom_malloc(n)
⑤no
一级空间配置:直接调用malloc/free只是增加了set_new_handler机制
②
byte_left0
return
①
byte_leftn
子过程调用
调用malloc补充内存池
内部set_new_handler处理机制
default_alloc(n)
0 条评论
下一页