在上一篇里面说到,vs 的标准分配器 std::allocator 并没有做内存管理。gnu的历史版本 2.9 中的标准分配器 std::allocator 也没有做内存管理,但是它提供的 extended allocator 中,std::alloc 就是一个做了内存管理的版本。在 gnu 新版本中,__gnu_cxx::__pool_alloc<_Ty> 就是 G2.9 的 std::alloc 的化身。
下面先分析以下 std::alloc 的运行模式,再下一篇分析具体代码。
不过先需要前三篇的基础:
数据结构

- 一个指针数组
free_list[16],分别负责16条不同大小的 block,以 8 bytes 为间隔。比如 #0 负责 8 bytes 的 block,#3 负责 32 bytes 的 block。当客户端需要 size

本文详细介绍了GNU C++标准分配器std::alloc的内存管理运行模式,包括数据结构的设计,如何处理内存碎片,以及在内存耗尽时的策略。文章通过实例分析了内存块的申请、内存碎片的处理过程,展示了std::alloc如何有效地管理内存,以减少内存浪费。
1465

被折叠的 条评论
为什么被折叠?



