STL的两级空间配置器
首先抛出一个问题:为什么需要二级配置器?
因为当我们动态分配内存的时候,分配的内存往往不仅仅是我们需要的那些,还会产生一些额外的开销,比如首尾的cookies,debug模式下产生的额外开销,和内存对齐所产生的pad。这些附加信息,降低了空间的利用率。
于是就设置了二级空间配置器,当开辟小等于128bytes内存时,就视为开辟小块内存,调用二级空间配置器。否则调用一级空间配置器。
一级空间配置器
在一级空间配置器中,最重要的函数有:
- allocate:用于分配空间,申请失败,调用oom_alloc尝试重新申请
- deallocate:用于释放空间
- reallocate:调整已经存在的空间大小,如果调整失败,调用oom_alloc尝试重新申请
其实对应的标准库函数就是malloc,free和realloc。