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