STL源码分析:Allocator

Allocator译为空间配置器而不是内存配置器,是因为空间也可以是磁盘或其它辅助介质。

考虚到小型区块所可能造成的内存破碎问题,SGI设计了双层级配置器,第一级配置器直接使用malloc()和free(),第二级配置器则视情况采用不同的策略:当配置区块超过128bytes时,视之为“足够大”,便调用第一级配置器;当配置区块小于128bytes时,视之为“过小”,为了降低额外负担,便采用复杂的memory pool整理方式,而不再求助于第一级配置器。

内存池

从内存池中取空间给free list使用,是chunk_alloc()的工作。

 

内存基本处理工具

STL定义有五个全局函数,作用于未初始化空间上。这样的功能对于容器的实现很有帮助。

分别是用于构造的construct()和用于析构的destroy(),另三个函数是uninitialized_copy(),uninitialized_fill(),uninitialized_fill_n(),分别对应该于高层次函数copy(),fill(),fill_n()。

参考:《STL源码剖析》

posted @ 2018-08-17 17:29  _raindrop  阅读(108)  评论(0编辑  收藏  举报