refactor: reorganize docs into plan/ and add skills/
This commit is contained in:
71
docs/api/memory/memory-proxy-allocator.md
Normal file
71
docs/api/memory/memory-proxy-allocator.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# ProxyAllocator
|
||||
|
||||
**命名空间**: `XCEngine::Memory`
|
||||
|
||||
**类型**: `class`
|
||||
|
||||
**描述**: 代理分配器,包装另一个分配器并记录分配统计信息,用于内存跟踪和调试。
|
||||
|
||||
## 概述
|
||||
|
||||
`ProxyAllocator` 是对另一个分配器的包装,它将所有分配请求转发给底层分配器,同时记录分配统计信息。这对于分析内存使用模式和调试内存问题非常有用。
|
||||
|
||||
## 公共方法
|
||||
|
||||
### 构造
|
||||
|
||||
| 方法 | 描述 |
|
||||
|------|------|
|
||||
| `ProxyAllocator(IAllocator* underlying, const char* name)` | 构造函数,指定底层分配器和名称 |
|
||||
|
||||
### IAllocator 实现
|
||||
|
||||
| 方法 | 描述 |
|
||||
|------|------|
|
||||
| `void* Allocate(size_t size, size_t alignment = 0) override` | 分配并统计 |
|
||||
| `void Free(void* ptr) override` | 释放并统计 |
|
||||
| `void* Reallocate(void* ptr, size_t newSize) override` | 重新分配并统计 |
|
||||
|
||||
### 统计
|
||||
|
||||
| 方法 | 描述 |
|
||||
|------|------|
|
||||
| `size_t GetTotalAllocated() const override` | 总分配字节数 |
|
||||
| `size_t GetTotalFreed() const override` | 总释放字节数 |
|
||||
| `size_t GetPeakAllocated() const override` | 峰值分配字节数 |
|
||||
| `size_t GetAllocationCount() const override` | 分配次数 |
|
||||
| `const Stats& GetStats() const` | 获取详细统计信息 |
|
||||
|
||||
## Stats 结构体
|
||||
|
||||
| 成员 | 类型 | 描述 |
|
||||
|------|------|------|
|
||||
| `totalAllocated` | `size_t` | 累计分配字节数 |
|
||||
| `totalFreed` | `size_t` | 累计释放字节数 |
|
||||
| `peakAllocated` | `size_t` | 峰值分配字节数 |
|
||||
| `allocationCount` | `size_t` | 分配次数 |
|
||||
| `memoryOverhead` | `size_t` | 额外开销(字节) |
|
||||
|
||||
## 使用示例
|
||||
|
||||
```cpp
|
||||
// 包装系统分配器
|
||||
IAllocator* sysAlloc = MemoryManager::Get().GetSystemAllocator();
|
||||
ProxyAllocator proxy(sysAlloc, "FrameData");
|
||||
|
||||
// 使用代理分配器
|
||||
void* ptr = proxy.Allocate(1024);
|
||||
|
||||
// 获取统计
|
||||
const ProxyAllocator::Stats& stats = proxy.GetStats();
|
||||
printf("Total allocated: %zu bytes\n", stats.totalAllocated);
|
||||
printf("Peak allocated: %zu bytes\n", stats.peakAllocated);
|
||||
printf("Allocation count: %zu\n", stats.allocationCount);
|
||||
printf("Current in use: %zu bytes\n",
|
||||
stats.totalAllocated - stats.totalFreed);
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [IAllocator](./memory-allocator.md) - 分配器接口
|
||||
- [MemoryManager](./memory-manager.md) - 内存管理器
|
||||
Reference in New Issue
Block a user