SGI STL中一级空间配置器也是通过malloc()和free()来管理的,二级空间配置器通过freelist的方式进行管理。‘
SGI STL默认使用二级空间配置器,主要是通过宏开关来决定使用哪种空间配置器:
#ifndef __STL_DEFAULT_ALLOCATOR
# ifdef __STL_USE_STD_ALLOCATORS
# define __STL_DEFAULT_ALLOCATOR(T) allocator<T> //一级 malloc/free
# else
# define __STL_DEFAULT_ALLOCATOR(T) alloc //二级 内存池
# endif
#endif
一级空间配置器声明:
template <int __inst>
class __malloc_alloc_template
二级空间配置器声明:
template <bool threads,int __inst>
class __default_alloc_template