ViewDesignEngine  3.1.0
高性能 CAD 计算几何引擎
vde::foundation::MemoryPool< T > 模板类 参考

固定块大小的内存池 更多...

#include <memory_pool.h>

Public 成员函数

 MemoryPool (size_t chunk_size=1024)
 构造内存池 更多...
 
 ~MemoryPool ()
 析构内存池,释放所有已分配的内存块 更多...
 
T * allocate (size_t n=1)
 从池中分配 n 个 T 对象的内存 更多...
 
void deallocate (T *p, size_t=1)
 将内存归还到池中 更多...
 

详细描述

template<typename T>
class vde::foundation::MemoryPool< T >

固定块大小的内存池

使用空闲链表实现 O(1) 的分配和释放。按固定大小的 chunk 预先分配内存, 适合频繁创建/销毁同类型小对象的场景(如半边网格的顶点和面)。

模板参数
T池中存储的对象类型
注解
内存池不调用对象的构造函数/析构函数,仅管理原始内存
适合 POD 类型或通过 placement new 手动管理生命周期的类型
警告
不在单个对象释放时归还内存给操作系统;仅在池析构时统一释放所有 chunk
MemoryPool<Vertex> pool(4096);
Vertex* v = pool.allocate(); // O(1)
// ... 使用 v ...
pool.deallocate(v); // O(1)

在文件 memory_pool.h30 行定义.

构造及析构函数说明

◆ MemoryPool()

template<typename T >
vde::foundation::MemoryPool< T >::MemoryPool ( size_t  chunk_size = 1024)
inlineexplicit

构造内存池

参数
chunk_size每个内存块可容纳的对象数(默认 1024)

在文件 memory_pool.h36 行定义.

◆ ~MemoryPool()

template<typename T >
vde::foundation::MemoryPool< T >::~MemoryPool ( )
inline

析构内存池,释放所有已分配的内存块

在文件 memory_pool.h41 行定义.

成员函数说明

◆ allocate()

template<typename T >
T* vde::foundation::MemoryPool< T >::allocate ( size_t  n = 1)
inline

从池中分配 n 个 T 对象的内存

当前实现忽略 n 参数,每次始终分配一个对象。 若空闲链表为空,自动分配新的 chunk。

参数
n对象数量(当前未使用,保留用于 API 兼容)
返回
指向未初始化内存的指针
前置条件
n 应小于 chunk_size_

在文件 memory_pool.h54 行定义.

◆ deallocate()

template<typename T >
void vde::foundation::MemoryPool< T >::deallocate ( T *  p,
size_t  = 1 
)
inline

将内存归还到池中

将对象内存插入空闲链表头部,不调用析构函数。

参数
p之前从 allocate() 获取的指针

在文件 memory_pool.h68 行定义.


该类的文档由以下文件生成: