1.0 KiB
1.0 KiB
LinearAllocator::Allocate
从当前偏移量开始分配一块线性内存。
void* Allocate(size_t size, size_t alignment = 8) override;
行为说明
当前实现流程:
size == 0时直接返回nullptr- 以
m_buffer + m_offset作为当前地址 - 如果
alignment > 0,按当前地址计算 misalignment,并把 padding 直接加到消耗的size上 - 如果
m_offset + size > m_capacity,返回nullptr - 返回当前偏移位置指针,并推进
m_offset
需要特别注意:
- 当前实现增加的是“消耗大小”,不是“返回地址偏移”,因此它不保证返回指针一定满足任意给定对齐要求。
- 分配是单调推进的,不支持单个块释放。
参数
size- 请求大小。alignment- 期望对齐;当前默认值为8。
返回值
void*- 成功时返回缓冲区中的一段内存;容量不足时返回nullptr。