
| const int n = 10000; Vec v; for (int i = 0; i < n; ++i) v.push_back(0); |
| template <class T> struct Allocator : public T { void * malloc(size_t sz); void free(void* p); size_t expand(void* p, size_t min, size_t max); }; |
| struct TopHeap { size_t expand(void*, size_t, size_t) { return 0; } protected: ~TopHeap() {} }; |
| 顶层堆 | |
| mallocHeap | 取代malloc的层 |
| mmapHeap | 取代虚拟内存管理的层 |
| sbrkHeap | 取代sbrk(连续内存)构建块堆的层 |
| AdaptHeap | 使数据结构可作为堆使用 |
| BoundedFreelistHeap | 有长度限制的释放列表 |
| ChunkHeap | 以给定大小的块来管理内存 |
| CoalesceHeap | 执行拼接与拆分 |
| FreelistHeap | 一个释放列表(用于捕捉释放的对象) |
| 组合堆 | |
| HybridHeap | 对小对象使用一个堆,而对大对象使用另一个堆 |
| SegHeap | 用于分配方法的一般分割 |
| StrictSegHeap | 用于分配方法的严格分割 |
| 工具层 | |
| ANSIWrapper | 提供与ANSI-malloc的兼容性 |
| DebugHeap | 检查多种分配错误 |
| LockedHeap | 为保证线程安全的闭锁堆 |
| PerClassHeap | 使用一个堆作为每个类的分配算符 |
| PHOThreadHeap | 带有自有分配算符私有堆 |
| ProfileHeap | 收集并输出碎片统计 |
| ThreadHeap | 一个纯私有堆分配算符 |
| ExceptionHeap | 当父类堆超出内存时,抛出一个异常 |
| TraceHeap | 输出有关内存分配的跟踪信息 |
| UniqueHeap | 引用一个堆对象的堆类型 |
| 对象表示 | |
| CoalesceableHeap | 为拼接提供支持 |
| SizeHeap | 在头部中记录对象大小 |
| 特殊用途的堆 | |
| ObstackHeap | 专门优化用于类似堆栈行为或快速大小调整的堆 |
| ZoneHeap | 一个区域分配算符 |
| XallocHeap | 优化用于类似堆栈行为的堆 |
| 通用堆 | |
| KingsleyHeap | 快速但多碎片的堆 |
| LeaHeap | 速度不快,但碎片很少的堆 |