# ProxyAllocator::Allocate 通过底层分配器申请内存,并更新代理统计。 ```cpp void* Allocate(size_t size, size_t alignment = 0) override; ``` ## 行为说明 当前实现会先加锁,然后执行以下逻辑: 1. 调用 `m_underlying->Allocate(size, alignment)`。 2. 如果返回非空: - `m_stats.totalAllocated += size` - `m_stats.allocationCount++` - 用 `m_stats.totalAllocated - m_stats.totalFreed` 更新 `m_stats.peakAllocated` 3. 返回底层分配器给出的指针。 ## 参数 - `size` - 请求大小;成功时会按这个值计入 `totalAllocated`。 - `alignment` - 对齐要求;当前只是原样转发到底层分配器。 ## 返回值 - `void*` - 底层分配器返回的指针;失败时通常为 `nullptr`。 ## 注意事项 - 统计记录的是“请求大小”,不是底层分配器真实消耗的字节数。 - 如果 `m_underlying == nullptr`,当前实现会直接解引用空指针。 - 由于 [Free](Free.md) 的释放统计存在缺陷,这里的峰值更新也可能被连带污染。 ## 相关文档 - [返回类型总览](ProxyAllocator.md) - [Free](Free.md) - [GetStats](GetStats.md)