Files
XCEngine/docs/api/XCEngine/Memory/PoolAllocator/Constructor.md

1.3 KiB

PoolAllocator::Constructor

构造一个固定块池分配器。

PoolAllocator(size_t blockSize, size_t poolSize, size_t alignment = 8);

行为说明

构造函数会一次性完成两件事:

  1. 计算每个 block 的实际步长 actualBlockSize
  2. 申请一整块池内存,并把它串成单向空闲链表。

alignment > 0 时,当前实现使用下面的位运算向上取整:

(blockSize + alignment - 1) & ~(alignment - 1)

随后它会调用 std::malloc(actualBlockSize * poolSize),并在这块连续内存上建立空闲链表。

参数

  • blockSize - 逻辑 block 大小,也是 Allocate 允许的最大请求大小。
  • poolSize - block 数量。
  • alignment - block 步长对齐粒度;默认值为 8

返回值

  • 无。

当前实现限制

  • 当前没有验证 alignment 是否是 2 的幂。
  • 当前没有防御 blockSize == 0poolSize == 0 或底层分配失败。
  • poolSize == 0malloc 失败时,后续空闲链表初始化可能进入未定义行为,因此调用方应保证参数有效。
  • 对齐只影响 block 步长,不保证 malloc 返回的池起始地址本身满足同样的高阶对齐要求。

相关文档