STL内存池

参考:https://blog.csdn.net/a987073381/article/details/52245795

简单说,就是allocator对于128B以上的数据,直接malloc分配,对于128B以下的数据,向堆申请一大块内存作为内存池,然后使用16个空闲链表,每个链表分别维护长度为8、16、24…128大小的块。对于申请量n,先向上取到8的倍数,然后查询对应的空闲链表,有就分配,没有的话:
1.向内存池申请一块内存,补充空闲链表;
2.若没有,内存池向堆再申请一块内存,执行1;
3.若也没有,则向别的空闲链表获取空闲块,若还是没有,就返回NULL

发布了154 篇原创文章 · 获赞 27 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/a13602955218/article/details/105354250
今日推荐