Files
XCEngine/docs/api/XCEngine/Memory/ProxyAllocator/Allocate.md

1.1 KiB

ProxyAllocator::Allocate

通过底层分配器申请内存,并更新代理统计。

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 的释放统计存在缺陷,这里的峰值更新也可能被连带污染。

相关文档