Files
XCEngine/docs/api/XCEngine/Memory/PoolAllocator/Contains.md

936 B

PoolAllocator::Contains

判断指针是否落在当前池的地址范围内。

bool Contains(void* ptr) const;

行为说明

当前实现只做范围判断:

  1. 如果 ptr == nullptrm_memory == nullptr,返回 false
  2. 计算 ptr 相对池起始地址的偏移。
  3. 用构造阶段的实际 block 步长乘以 m_totalBlocks,得到整个池的地址范围。
  4. 只要偏移仍在这个范围内,就返回 true

这意味着:

  • 它是范围检查,不是“当前已分配块”的检查。
  • 指向某个 block 中间位置的指针也可能返回 true
  • 已经释放回池的指针仍可能返回 true
  • 它不验证指针是否落在 block 边界上。

参数

  • ptr - 待检测指针。

返回值

  • bool - 指针位于池地址范围内时返回 true;否则返回 false

相关文档