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

1.0 KiB
Raw Blame History

LinearAllocator::Allocate

从当前偏移量开始分配一块线性内存。

void* Allocate(size_t size, size_t alignment = 8) override;

行为说明

当前实现流程:

  1. size == 0 时直接返回 nullptr
  2. m_buffer + m_offset 作为当前地址
  3. 如果 alignment > 0,按当前地址计算 misalignment并把 padding 直接加到消耗的 size
  4. 如果 m_offset + size > m_capacity,返回 nullptr
  5. 返回当前偏移位置指针,并推进 m_offset

需要特别注意:

  • 当前实现增加的是“消耗大小”,不是“返回地址偏移”,因此它不保证返回指针一定满足任意给定对齐要求。
  • 分配是单调推进的,不支持单个块释放。

参数

  • size - 请求大小。
  • alignment - 期望对齐;当前默认值为 8

返回值

  • void* - 成功时返回缓冲区中的一段内存;容量不足时返回 nullptr

相关文档