一、boost库中pool库-类图概要
1、概览
2、概述
2.1、struct default_user_allocator_new_delete 与 struct default_user_allocator_malloc_free
struct default_user_allocator_new_delete中定义两个静态函数用于内存的分配与释放,分别为static char * malloc (const size_type bytes)及static void free (char * const block),同样的struct default_user_allocator_malloc_free也定义了两个同样的函数用于内存的分配和内存的释放,只是实现的方式不同。
2.2、PODptr类
PODptr类是定义的一个“虚拟”指针类,含有两个成员变量指针ptr(void *)及sz(size_type),之后用于管理分配内存块(block)。
2.3、simple_segregated_storage类(简单的隔离存储)
simple_segregated_storage类定义了一个 void* first指针,它总指向下一个可用的内存区块,分配内存或删除内存时,first指针通常来说会改变。
2.3、pool类(内存池)
pool类保护继承simple_segregated_storage类,即所有simple_segregated_storage类中成员函数或成员变量在pool类中属性都被声明为protected,外界不能直接访问。pool类中含有一个PODptr*的指针名为list,它被之后用于帮助内存块之间产生联系。
二、boost内存池前置声明文件(boost/pool/poolfwd.hpp)
我们来仔细看看poolfwd.hpp关于pool类的一些内容即可:要注意的是模板的默认取值,SizeType = std::size_t及UserAllocator=default_user_alloccator_new_delete
三、 simple_segregated_storage类实现文件( boost/pool/simple_segregated_storage.hpp)
1、simple_segregated_storage类概览
2、成员变量(void* first)
simple_segregated_storage.hpp中含有快差不多400行代码,成员函数众多但成员变量只有一个void* first,我们简单看它的定义及boost库中对它的注释:
它的作用是指向未被使用的内存区块(chunk),当没有可以用来使用的内存区块时,它的值为零。
3、成员函数