Bootstrap

【C++内存管理】G2.9 std::alloc 运行模式

上一篇里面说到,vs 的标准分配器 std::allocator 并没有做内存管理。gnu的历史版本 2.9 中的标准分配器 std::allocator 也没有做内存管理,但是它提供的 extended allocator 中,std::alloc 就是一个做了内存管理的版本。在 gnu 新版本中,__gnu_cxx::__pool_alloc<_Ty> 就是 G2.9 的 std::alloc 的化身。


下面先分析以下 std::alloc 的运行模式,再下一篇分析具体代码。
不过先需要前三篇的基础:

内存管理实例一
内存管理实例二
内存管理实例三


数据结构

G2.9 std::alloc

  • 一个指针数组 free_list[16],分别负责16条不同大小的 block,以 8 bytes 为间隔。比如 #0

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;