1.3 KiB
1.3 KiB
PoolAllocator::Constructor
构造一个固定块池分配器。
PoolAllocator(size_t blockSize, size_t poolSize, size_t alignment = 8);
行为说明
构造函数会一次性完成两件事:
- 计算每个 block 的实际步长
actualBlockSize。 - 申请一整块池内存,并把它串成单向空闲链表。
当 alignment > 0 时,当前实现使用下面的位运算向上取整:
(blockSize + alignment - 1) & ~(alignment - 1)
随后它会调用 std::malloc(actualBlockSize * poolSize),并在这块连续内存上建立空闲链表。
参数
blockSize- 逻辑 block 大小,也是 Allocate 允许的最大请求大小。poolSize- block 数量。alignment- block 步长对齐粒度;默认值为8。
返回值
- 无。
当前实现限制
- 当前没有验证
alignment是否是 2 的幂。 - 当前没有防御
blockSize == 0、poolSize == 0或底层分配失败。 - 在
poolSize == 0或malloc失败时,后续空闲链表初始化可能进入未定义行为,因此调用方应保证参数有效。 - 对齐只影响 block 步长,不保证
malloc返回的池起始地址本身满足同样的高阶对齐要求。