C++_STL源码阅读:Allocator & Iterator


Allocator:

这里的目标不一定是内存,是泛指的“空间”,比如硬盘等介质;

SGI实现了一个两层的分配器,

  • 第一层级:直接使用malloc和free;其实这个操作成本很高;
  • 第二层级:视情况,如果分配块>128bytes,则调用第一层级分配器;否则,采用memeory pool的碎片内存管理方式;比如维护16个自由链表free lists,负责16种小型区块的次分配能力;内存池不足的时候,转调第一层级分配器;


Iterator:

型别:

  • value type
  • difference type
  • pointer
  • reference
  • iterator category

类型:

  • input
  • output
  • forward
  • bi-directional
  • random access

关系如下:

C++_STL源码阅读:Allocator & Iterator_第1张图片


你可能感兴趣的:(C++)