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

2.9 KiB
Raw Blame History

LinearAllocator

命名空间: XCEngine::Memory

类型: class

头文件: XCEngine/Memory/LinearAllocator.h

描述: 以单调递增偏移量分配内存的线性分配器,适合临时或批量释放场景。

概述

LinearAllocator 是典型的 bump / arena allocator每次分配只推进一个偏移量不跟踪单个块也不支持逐块释放。它适合

  • 帧级临时内存
  • 批量构建后整体清空的中间数据
  • 需要极低分配开销、但不要求单个对象回收的场景

生命周期与所有权

  • Constructor 创建一块固定容量缓冲区。
  • 如果传入父分配器,底层缓冲由父分配器提供并在析构时归还给父分配器。
  • 如果没有父分配器,当前实现会直接在构造函数中申请原生内存。
  • Clear 会把偏移量重置为零,相当于一次性回收所有线性分配结果。

当前实现限制

  • Free 目前是空实现,不会释放单个块。
  • Reallocate 目前始终返回 nullptr
  • GetMarker / SetMarker 使用的是“偏移量令牌”,不是缓冲区中的真实指针。
  • GetPeakAllocated 当前直接返回总容量,而不是历史峰值使用量。
  • GetAllocationCount 当前始终返回 0
  • Allocate 会尝试处理对齐,但当前实现通过“增加消耗大小”而不是“返回对齐后的指针”来处理 padding因此不要过度依赖高阶自定义对齐保证。

线程语义

  • 当前没有锁;应由调用方在单线程或外部同步前提下使用。

公开方法

方法 说明
Constructor 构造线性分配器。
Destructor 销毁分配器并释放底层缓冲。
Allocate 从当前偏移量分配一块内存。
Free 释放单个块;当前为空实现。
Reallocate 重分配块;当前返回 nullptr
Clear 清空所有线性分配结果。
GetMarker 获取当前偏移标记。
SetMarker 回退或推进到指定偏移标记。
GetUsedSize 查询当前已用大小。
GetCapacity 查询总容量。
GetName 查询分配器名称。
GetTotalAllocated 查询当前已用字节数。
GetTotalFreed 查询累计释放量;当前固定为 0
GetPeakAllocated 查询峰值分配量;当前返回容量。
GetAllocationCount 查询分配次数;当前固定为 0

相关文档