37 lines
1.1 KiB
Markdown
37 lines
1.1 KiB
Markdown
|
|
# LinearAllocator::LinearAllocator
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
explicit LinearAllocator(size_t size, IAllocator* parent = nullptr);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
构造一个线性分配器,预分配指定大小的缓冲区。如果提供了 `parent` 分配器,则使用它分配底层缓冲区;否则使用系统默认分配(`_aligned_malloc`,8 字节对齐)。
|
|||
|
|
|
|||
|
|
**参数:**
|
|||
|
|
- `size` - 预分配的缓冲区大小(字节数)
|
|||
|
|
- `parent` - 父分配器,用于分配底层缓冲区,默认为 `nullptr`(使用系统分配)
|
|||
|
|
|
|||
|
|
**返回:** 无
|
|||
|
|
|
|||
|
|
**复杂度:** O(n),需要分配 `size` 大小的缓冲区
|
|||
|
|
|
|||
|
|
**示例:**
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
#include <XCEngine/Memory/LinearAllocator.h>
|
|||
|
|
|
|||
|
|
// 使用系统分配器创建 1MB 线性分配器
|
|||
|
|
LinearAllocator allocator1(1024 * 1024);
|
|||
|
|
|
|||
|
|
// 使用指定的父分配器
|
|||
|
|
IAllocator* parent = MemoryManager::Get().GetSystemAllocator();
|
|||
|
|
LinearAllocator allocator2(1024 * 1024, parent);
|
|||
|
|
|
|||
|
|
// 默认 8 字节对齐
|
|||
|
|
void* ptr = allocator1.Allocate(256);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [LinearAllocator 总览](linear-allocator.md) - 返回类总览
|
|||
|
|
- [IAllocator](../allocator/allocator.md) - 分配器接口
|