STL之空间配置器
一、四种函数
1、std::allocator
内存配置
2、std::deallocate
内存释放
3、std::construct
对象构造
4、std::destroy
对象析构
二、两级配置器
原因:为了提升内存管理的效率,较少申请内存造成的内存碎片问题。
1、第一级空间配置器
当分配的空间大小超过128B时,会使用第一级空间配置器,使用malloc()、realloc()、free()函数进行内存空间的分配和释放
2、第二级空间配置器
当分配的空间大小小于128B时,使用第二季空间配置器,使用内存池技术,通过链表来管理内存
在分配内存的时候分为三种情况,核心函数 ChunkAlloc
函数开始,先计算内存池的剩余空间以及分配多个节点需要总共内存空间
(1)当剩余的内存大于要分配的内存的时,直接分配,之后返回
(2)当剩余的内存不能满足要配方的多个节点的内存需要,但是满足至少一个节点以上的内存需求,能满足几个节点的内存就分配几个节点的内存,之后返回
(3)当剩余的内存连一个节点的内存需求都无法满足的时候,将剩余的内存挂在自由连表上,然后向系统申请,成功则返回,申请失败则在自由链表中寻找,如行不通,则调用一级空间适配器