mFrame
載入中...
搜尋中...
無符合項目
ufm::sys::Stacker 類別 參考文件

堆疊式記憶體分配器 更多...

#include <Stacker.h>

類別ufm::sys::Stacker的繼承圖:
ufm::lang::Object ufm::util::Collection< void * > ufm::sys::Allocator ufm::lang::Interface ufm::lang::Iterable< void * > ufm::util::Container

公開方法(Public Methods)

 Stacker (void *buffer, int size)
 建構一個新的 Stacker 物件
 
 Stacker (ufm::lang::Memory memory) noexcept
 建構一個新的 Stacker 物件
 
virtual ~Stacker (void) override
 解構 Stacker 物件
 
virtual void forEach (ufm::func::Consumer< void *& > &action) override
 遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。
 
virtual void ** elementAt (int index) const override
 獲取集合中指定索引處的元素。
 
virtual int nextIndex (int index) const override
 返回當前索引的下一個有效索引。
 
virtual ufm::util::Iterator< void * > begin (void) override
 返回一個迭代器,用於遍歷集合中的元素
 
virtual ufm::util::Iterator< void * > end (void) override
 返回一個迭代器,用於遍歷集合的結尾
 
virtual void clear (void) override
 從此集合中刪除所有元素(可選操作)。此方法返回後,集合將為空。
 
virtual bool isEmpty (void) const override
 如果此集合不包含元素,則返回true。
 
virtual int size (void) const override
 返回此集合中的元素數。
 
virtual void * alloc (int size) override
 分配指定大小的記憶體
 
virtual bool free (void *ptr, int size=0) override
 釋放先前分配的記憶體
 
virtual int getFree (void) override
 取得剩餘的可用記憶體數量
 
virtual int getTotal (void) override
 取得總記憶體大小
 
virtual ufm::lang::Memory allocMemory (int size)
 分配指定大小的記憶體並返回其 Memory 封裝
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Object
void * operator new (size_t n)
 使用運算子 new 分配記憶體
 
void * operator new (size_t n, void *p)
 在指定記憶體上調用運算子 new
 
virtual ufm::lang::ObjectgetObject (void) override
 取得對應的 Object 物件
 
void delay (int milliseconds) const
 延遲指定的毫秒數進行執行緒等待
 
bool equals (Object *object) const
 判斷與另一物件是否為相同參照(指標型態比較)
 
bool equals (Object &object) const
 判斷與另一物件是否為相同參照(參照型態比較)
 
void wait (void) const
 使當前線程等待直到被通知
 
bool wait (int timeout) const
 等待通知或超時
 
bool yield (void) const
 讓執行緒讓渡控制權給同優先權的下一個執行緒
 
int lock (void) const
 核心鎖定,鎖定期間禁止線程切換
 
int unlock (void) const
 核心解鎖
 
ufm::sys::ThreadcurrentThread (void) const
 取得當前執行緒指標
 
virtual int hashcode (void) const
 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Interface
virtual ~Interface (void)=default
 虛擬析構函式
 

靜態公開方法(Static Public Methods)

static Stackerconstruct (void *pointer, int size)
 在指定的記憶體區域上建構 Stacker 物件
 

保護屬性

ufm::lang::Memory vMemory
 用於堆疊分配的記憶體空間
 
uint8 * vStackPointer
 堆疊指針,指向下一個可分配的記憶體位置
 
uint32 vMask
 對齊遮罩,用於記憶體對齊
 

詳細描述

堆疊式記憶體分配器

一個簡單的記憶體堆疊分配器,支援順序分配但不支援個別釋放。 當呼叫 clear() 方法時,所有之前分配的記憶體將一次性釋放。 適合用於臨時性記憶體分配,並在完成後一次性釋放所有資源的情境。

1.0.0

建構子與解構子說明文件

◆ Stacker() [1/2]

ufm::sys::Stacker::Stacker ( void * buffer,
int size )
inline

建構一個新的 Stacker 物件

參數
buffer用於堆疊分配的記憶體緩衝區指標
size緩衝區大小(位元組)
建構後,堆疊指針將設定在記憶體起始位置

◆ Stacker() [2/2]

ufm::sys::Stacker::Stacker ( ufm::lang::Memory memory)
noexcept

建構一個新的 Stacker 物件

參數
memory用於堆疊分配的記憶體物件
會使用提供的記憶體物件作為堆疊的儲存空間

◆ ~Stacker()

virtual ufm::sys::Stacker::~Stacker ( void )
overridevirtual

解構 Stacker 物件

解構時不會自動釋放已分配的記憶體,僅釋放 Stacker 本身使用的資源

函式成員說明文件

◆ alloc()

virtual void * ufm::sys::Stacker::alloc ( int size)
overridevirtual

分配指定大小的記憶體

參數
size要分配的記憶體大小,以位元組(bytes)為單位
傳回值
void* 分配成功時返回記憶體的指標,分配失敗時返回 nullptr

實作 ufm::sys::Allocator.

◆ allocMemory()

virtual ufm::lang::Memory ufm::sys::Stacker::allocMemory ( int size)
virtual

分配指定大小的記憶體並返回其 Memory 封裝

參數
size需要分配的記憶體大小(位元組)
傳回值
ufm::lang::Memory 分配的記憶體封裝物件
如果剩餘空間不足,將返回一個空的 Memory 物件

◆ begin()

virtual ufm::util::Iterator< void * > ufm::sys::Stacker::begin ( void )
overridevirtual

返回一個迭代器,用於遍歷集合中的元素

傳回值
PArraySet::Iterator 返回一個指向集合元素的迭代器

實作 ufm::lang::Iterable< void * >.

◆ clear()

virtual void ufm::sys::Stacker::clear ( void )
overridevirtual

從此集合中刪除所有元素(可選操作)。此方法返回後,集合將為空。

實作 ufm::util::Container.

◆ construct()

static Stacker * ufm::sys::Stacker::construct ( void * pointer,
int size )
static

在指定的記憶體區域上建構 Stacker 物件

參數
pointer用於放置 Stacker 物件的記憶體區域
size可用的記憶體大小
傳回值
Stacker* 建構的 Stacker 指標,若空間不足則返回 nullptr
此方法使用記憶體的一部分建構 Stacker 物件,剩餘部分用作堆疊空間

◆ elementAt()

virtual void ** ufm::sys::Stacker::elementAt ( int index) const
overridevirtual

獲取集合中指定索引處的元素。

參數
index要獲取的元素索引
傳回值
E* 指向集合中指定索引處元素的指針

實作 ufm::lang::Iterable< void * >.

◆ end()

virtual ufm::util::Iterator< void * > ufm::sys::Stacker::end ( void )
overridevirtual

返回一個迭代器,用於遍歷集合的結尾

傳回值
PArraySet::Iterator 返回一個指向集合結尾的迭代器

實作 ufm::lang::Iterable< void * >.

◆ forEach()

virtual void ufm::sys::Stacker::forEach ( ufm::func::Consumer< void *& > & action)
overridevirtual

遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。

當操作導致底層資料源發生變動時(未同步處理),其行為未定義。

參數
action對每個元素執行的操作

實作 ufm::lang::Iterable< void * >.

◆ free()

virtual bool ufm::sys::Stacker::free ( void * ptr,
int size = 0 )
overridevirtual

釋放先前分配的記憶體

參數
ptr要釋放的記憶體指標,此指標必須是由 alloc 方法分配的
size要釋放的記憶體大小,某些實作可能需要此參數,預設為 0
傳回值
true 記憶體成功釋放
false 記憶體釋放失敗

實作 ufm::sys::Allocator.

◆ getFree()

virtual int ufm::sys::Stacker::getFree ( void )
overridevirtual

取得剩餘的可用記憶體數量

傳回值
int 目前尚可使用的記憶體大小,以位元組(bytes)為單位

實作 ufm::sys::Allocator.

◆ getTotal()

virtual int ufm::sys::Stacker::getTotal ( void )
overridevirtual

取得總記憶體大小

傳回值
int 系統總記憶體大小,以位元組(bytes)為單位

實作 ufm::sys::Allocator.

◆ isEmpty()

virtual bool ufm::sys::Stacker::isEmpty ( void ) const
overridevirtual

如果此集合不包含元素,則返回true。

傳回值
true如果此集合不包含元素

實作 ufm::util::Container.

◆ nextIndex()

virtual int ufm::sys::Stacker::nextIndex ( int index) const
overridevirtual

返回當前索引的下一個有效索引。

參數
index當前索引
傳回值
int 下一個有效索引

如果當前索引已經是最後一個元素,則返回 -1。 如果當前索引無效(如 -1),則返回 0

實作 ufm::lang::Iterable< void * >.

◆ size()

virtual int ufm::sys::Stacker::size ( void ) const
overridevirtual

返回此集合中的元素數。

如果此收藏包含超過 Integer.MAX_VALUE個元素,則返回Integer.MAX_VALUE。

傳回值
uint32 - 此集合中的元素数

實作 ufm::util::Container.


此類別(class) 文件是由下列檔案中產生: