docs: rebuild Memory API content
This commit is contained in:
@@ -1,31 +1,45 @@
|
||||
# PoolAllocator::PoolAllocator()
|
||||
# PoolAllocator::Constructor
|
||||
|
||||
构造对象。
|
||||
构造一个固定块池分配器。
|
||||
|
||||
```cpp
|
||||
PoolAllocator(size_t blockSize, size_t poolSize, size_t alignment = 8);
|
||||
```
|
||||
|
||||
该方法声明于 `XCEngine/Memory/PoolAllocator.h`,当前页面用于固定 `PoolAllocator` 类目录下的方法级 canonical 路径。
|
||||
## 行为说明
|
||||
|
||||
**参数:**
|
||||
- `blockSize` - 参数语义详见头文件声明。
|
||||
- `poolSize` - 参数语义详见头文件声明。
|
||||
- `alignment` - 参数语义详见头文件声明。
|
||||
构造函数会一次性完成两件事:
|
||||
|
||||
**返回:** `void` - 无返回值。
|
||||
1. 计算每个 block 的实际步长 `actualBlockSize`。
|
||||
2. 申请一整块池内存,并把它串成单向空闲链表。
|
||||
|
||||
**示例:**
|
||||
当 `alignment > 0` 时,当前实现使用下面的位运算向上取整:
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Memory/PoolAllocator.h>
|
||||
|
||||
void Example() {
|
||||
XCEngine::Memory::PoolAllocator object;
|
||||
}
|
||||
(blockSize + alignment - 1) & ~(alignment - 1)
|
||||
```
|
||||
|
||||
随后它会调用 `std::malloc(actualBlockSize * poolSize)`,并在这块连续内存上建立空闲链表。
|
||||
|
||||
## 参数
|
||||
|
||||
- `blockSize` - 逻辑 block 大小,也是 [Allocate](Allocate.md) 允许的最大请求大小。
|
||||
- `poolSize` - block 数量。
|
||||
- `alignment` - block 步长对齐粒度;默认值为 `8`。
|
||||
|
||||
## 返回值
|
||||
|
||||
- 无。
|
||||
|
||||
## 当前实现限制
|
||||
|
||||
- 当前没有验证 `alignment` 是否是 2 的幂。
|
||||
- 当前没有防御 `blockSize == 0`、`poolSize == 0` 或底层分配失败。
|
||||
- 在 `poolSize == 0` 或 `malloc` 失败时,后续空闲链表初始化可能进入未定义行为,因此调用方应保证参数有效。
|
||||
- 对齐只影响 block 步长,不保证 `malloc` 返回的池起始地址本身满足同样的高阶对齐要求。
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [返回类总览](PoolAllocator.md)
|
||||
- [返回模块目录](../Memory.md)
|
||||
- [返回类型总览](PoolAllocator.md)
|
||||
- [Destructor](Destructor.md)
|
||||
- [GetBlockSize](GetBlockSize.md)
|
||||
|
||||
Reference in New Issue
Block a user