Files
XCEngine/docs/api/memory/memory-allocator.md

75 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# IAllocator
**命名空间**: `XCEngine::Memory`
**类型**: `class` (abstract interface)
**描述**: 内存分配器抽象接口,定义标准分配协议。
## 概述
`IAllocator` 是 XCEngine 内存管理系统的核心抽象接口。它定义了分配、释放和重新分配内存的标准方法以及内存统计接口。所有专用分配器LinearAllocator、PoolAllocator、ProxyAllocator都实现此接口。
## 公共方法
### 内存操作
| 方法 | 描述 |
|------|------|
| `virtual void* Allocate(size_t size, size_t alignment = 0)` | 分配内存 |
| `virtual void Free(void* ptr)` | 释放内存 |
| `virtual void* Reallocate(void* ptr, size_t newSize)` | 重新分配内存 |
### 统计信息
| 方法 | 描述 |
|------|------|
| `virtual size_t GetTotalAllocated() const` | 获取已分配总字节数 |
| `virtual size_t GetTotalFreed() const` | 获取已释放总字节数 |
| `virtual size_t GetPeakAllocated() const` | 获取峰值分配字节数 |
| `virtual size_t GetAllocationCount() const` | 获取分配次数 |
### 元信息
| 方法 | 描述 |
|------|------|
| `virtual const char* GetName() const = 0` | 获取分配器名称 |
## 使用示例
```cpp
#include <XCEngine/Memory/IAllocator.h>
class MyAllocator : public IAllocator {
public:
void* Allocate(size_t size, size_t alignment = 0) override {
// 实现分配逻辑
return ::operator new(size);
}
void Free(void* ptr) override {
// 实现释放逻辑
::operator delete(ptr);
}
void* Reallocate(void* ptr, size_t newSize) override {
void* newPtr = Allocate(newSize);
// 拷贝旧数据...
Free(ptr);
return newPtr;
}
size_t GetTotalAllocated() const override { return m_allocated; }
size_t GetTotalFreed() const override { return m_freed; }
size_t GetPeakAllocated() const override { return m_peak; }
size_t GetAllocationCount() const override { return m_count; }
const char* GetName() const override { return "MyAllocator"; }
};
```
## 相关文档
- [MemoryManager](./memory-manager.md) - 内存管理器
- [LinearAllocator](./memory-linear-allocator.md) - 线性分配器
- [PoolAllocator](./memory-pool-allocator.md) - 内存池分配器