39 lines
877 B
Markdown
39 lines
877 B
Markdown
|
|
# PoolAllocator::Contains
|
||
|
|
|
||
|
|
```cpp
|
||
|
|
bool Contains(void* ptr) const;
|
||
|
|
```
|
||
|
|
|
||
|
|
检查给定的指针是否属于此内存池的地址范围。由于池在构造时预分配连续内存,可通过指针地址区间判断所有权。此方法用于调试和内存验证。
|
||
|
|
|
||
|
|
**参数:**
|
||
|
|
- `ptr` - 要检查的指针
|
||
|
|
|
||
|
|
**返回:** 指针属于此池返回 `true`,否则返回 `false`
|
||
|
|
|
||
|
|
**复杂度:** O(1)
|
||
|
|
|
||
|
|
**示例:**
|
||
|
|
|
||
|
|
```cpp
|
||
|
|
#include <XCEngine/Memory/PoolAllocator.h>
|
||
|
|
|
||
|
|
PoolAllocator pool(sizeof(int), 100);
|
||
|
|
|
||
|
|
void* inside = pool.Allocate();
|
||
|
|
void* outside = ::operator new(sizeof(int));
|
||
|
|
|
||
|
|
if (pool.Contains(inside)) {
|
||
|
|
// inside 属于此内存池,可以安全 Free
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!pool.Contains(outside)) {
|
||
|
|
// outside 不属于此池,不能调用 pool.Free()
|
||
|
|
::operator delete(outside);
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 相关文档
|
||
|
|
|
||
|
|
- [PoolAllocator 总览](pool-allocator.md) - 返回类总览
|