对于new运算符内含两个阶段的操作:①调用::operator配置内存,②调用构造函数构造内容,空间配置器主要作用是①配置内存。
对于空间配置器主要实现了第一级空间配置器、第二级空间配置器和内存池,其中第一级空间配置器直接使用malloc/free/realloc等函数,第二级空间配置器维护16个8~128byte的自由链表(组织形式类似hash开链)和一个内存池,每次获取/释放内存时都是从自由链表获取/归还到自由链表,若自由链表空间不足时就从内存池获取,内存池空间不足时再从系统获取。
代码实现:https://github.com/inmail/mySTL/blob/master/mySTL/1stl_alloctor.h