mFrame
載入中...
搜尋中...
無符合項目
ufm::util::Pool 結構 參考文件abstract

記憶體池介面,提供固定大小記憶體塊的分配和釋放。 更多...

#include <Pool.h>

類別ufm::util::Pool的繼承圖:
ufm::util::Collection< E > ufm::lang::Iterable< E > ufm::util::Container

公開方法(Public Methods)

virtual uint32 elementSize (void) const override
 返回此記憶體池中元素的大小(以位元組為單位)
 
virtual uint32 capacity (void) const override
 返回此記憶體池的容量
 
virtual void * alloc (void) override
 從記憶體池中分配一個元素
 
virtual ufm::lang::Memory allocMemory (void) override
 從記憶體池中分配一個記憶體區塊並封裝為 Memory 對象
 
virtual void * add (const void *elenemt) override
 從記憶體池中分配記憶體並複製元素內容
 
virtual bool remove (void *element) override
 釋放元素佔用的記憶體,將其歸還給記憶體池
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Iterable< E >
virtual void forEach (ufm::func::Consumer< E & > &action) override
 遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。
 
virtual E * elementAt (int index) const override
 獲取集合中指定索引處的元素。
 
virtual int nextIndex (int index) const override
 返回當前索引的下一個有效索引。
 
virtual ufm::util::Iterator< E > begin (void) override
 返回一個迭代器,用於遍歷集合中的元素
 
virtual ufm::util::Iterator< E > end (void) override
 返回一個迭代器,用於遍歷集合的結尾
 
- 公開方法(Public Methods) 繼承自 ufm::util::Container
virtual void clear (void) override
 從此集合中刪除所有元素(可選操作)
 
virtual bool isEmpty (void) const override
 檢查此集合是否不包含任何元素
 
virtual int size (void) const override
 返回此集合中的元素數量
 

詳細描述

記憶體池介面,提供固定大小記憶體塊的分配和釋放。

Pool 介面定義了記憶體池的標準操作,用於高效管理 固定大小的記憶體塊,避免頻繁的動態記憶體分配開銷。

使用範例:
// 記憶體池使用範例
class SimplePool : public ufm::util::Pool {
std::vector<void*> freeBlocks;
std::vector<bool> allocated;
void* memoryBlock;
uint32 blockSize;
uint32 totalBlocks;
public:
SimplePool(uint32 elementSize, uint32 count)
: blockSize(elementSize), totalBlocks(count) {
memoryBlock = malloc(elementSize * count);
allocated.resize(count, false);
// 初始化空閒塊列表
for (uint32 i = 0; i < count; ++i) {
freeBlocks.push_back(static_cast<char*>(memoryBlock) + i * elementSize);
}
}
void* alloc(void) override {
if (!freeBlocks.empty()) {
void* block = freeBlocks.back();
freeBlocks.pop_back();
return block;
}
return nullptr;
}
uint32 elementSize(void) const override {
return blockSize;
}
uint32 capacity(void) const override {
return totalBlocks;
}
};
記憶體池介面,提供固定大小記憶體塊的分配和釋放。
Definition Pool.h:85
參閱
ufm::util::Collection
ufm::lang::Memory
1.0.0

函式成員說明文件

◆ add()

virtual void * ufm::util::Pool::add ( const void * elenemt)
pure virtual

從記憶體池中分配記憶體並複製元素內容

參數
elenemt要複製的元素指針
傳回值
void* 如果記憶體池未滿,則返回複製後的元素指針;否則返回空指針

◆ alloc()

virtual void * ufm::util::Pool::alloc ( void )
pure virtual

從記憶體池中分配一個元素

傳回值
void* 如果記憶體池未滿,則返回元素指針;否則返回空指針

◆ allocMemory()

virtual ufm::lang::Memory ufm::util::Pool::allocMemory ( void )
pure virtual

從記憶體池中分配一個記憶體區塊並封裝為 Memory 對象

傳回值
ufm::lang::Memory 包含分配記憶體的 Memory 對象

◆ capacity()

virtual uint32 ufm::util::Pool::capacity ( void ) const
pure virtual

返回此記憶體池的容量

傳回值
uint32 記憶體池的總容量(可容納的元素數量)

◆ elementSize()

virtual uint32 ufm::util::Pool::elementSize ( void ) const
pure virtual

返回此記憶體池中元素的大小(以位元組為單位)

傳回值
uint32 元素大小(位元組)

◆ remove()

virtual bool ufm::util::Pool::remove ( void * element)
pure virtual

釋放元素佔用的記憶體,將其歸還給記憶體池

參數
element要釋放的元素指針
傳回值
true 如果成功找到並移除該元素
false 如果元素不在此記憶體池中

此結構(structure) 文件是由下列檔案中產生: