41 lines
750 B
Markdown
41 lines
750 B
Markdown
|
|
# PoolAllocator::GetFreeBlockCount
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
size_t GetFreeBlockCount() const;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
返回当前空闲块的的数量。每次 `Allocate` 成功后减 1,每次 `Free` 后加 1。
|
|||
|
|
|
|||
|
|
**参数:** 无
|
|||
|
|
|
|||
|
|
**返回:** 当前可分配的空闲块数量
|
|||
|
|
|
|||
|
|
**复杂度:** O(1)
|
|||
|
|
|
|||
|
|
**示例:**
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
#include <XCEngine/Memory/PoolAllocator.h>
|
|||
|
|
|
|||
|
|
PoolAllocator pool(sizeof(int), 100);
|
|||
|
|
|
|||
|
|
size_t initial = pool.GetFreeBlockCount(); // 100
|
|||
|
|
|
|||
|
|
void* blocks[10];
|
|||
|
|
for (int i = 0; i < 10; ++i) {
|
|||
|
|
blocks[i] = pool.Allocate();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
size_t after = pool.GetFreeBlockCount(); // 90
|
|||
|
|
|
|||
|
|
for (int i = 0; i < 5; ++i) {
|
|||
|
|
pool.Free(blocks[i]);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
size_t final = pool.GetFreeBlockCount(); // 95
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [PoolAllocator 总览](pool-allocator.md) - 返回类总览
|