2.2 KiB
2.2 KiB
IAllocator
命名空间: XCEngine::Memory
类型: class (abstract interface)
头文件: XCEngine/Memory/Allocator.h
描述: 定义统一的分配、释放、重分配和统计查询接口。
概述
IAllocator 是当前内存模块的基础抽象。它把“如何申请和回收一块内存”统一成一组稳定接口,让上层代码不必直接依赖具体分配器实现。
它的职责分成两部分:
- 内存操作:
Allocate、Free、Reallocate - 统计查询:
GetTotalAllocated、GetTotalFreed、GetPeakAllocated、GetAllocationCount
设计目的
这类接口在引擎里很有价值,因为:
- 容器、资源系统和工具系统可以接受任意分配器实现。
- 不同策略可以共存,例如线性分配器、对象池、系统分配器代理。
- 调试和统计逻辑可以围绕接口做组合,而不是侵入所有调用点。
当前实现约束
IAllocator只定义形状,不保证线程安全。- 统计方法的语义由具体实现决定;当前不同分配器的统计精度并不一致。
- 不是每个实现都完整支持
Free和Reallocate。
已知实现
- LinearAllocator
- PoolAllocator
- ProxyAllocator
SystemAllocator:当前仅存在于engine/src/Memory/Memory.cpp内部,不是公共类型。
公开方法
| 方法 | 说明 |
|---|---|
| Destructor | 虚析构函数。 |
| Allocate | 申请内存。 |
| Free | 释放内存。 |
| Reallocate | 调整已分配内存大小。 |
| GetTotalAllocated | 查询累计已分配量。 |
| GetTotalFreed | 查询累计已释放量。 |
| GetPeakAllocated | 查询峰值分配量。 |
| GetAllocationCount | 查询当前或累计分配次数。 |
| GetName | 查询分配器名称。 |