![]() |
mFrame
|
堆疊式記憶體分配器 更多...
#include <Stacker.h>
公開方法(Public Methods) | |
| template<size_t N> | |
| Stacker (uint64(&buffer)[N]) | |
| 建構一個新的 Stacker 物件 | |
| 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 |
| 檢查此集合是否不包含任何元素 | |
| 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::Object & | getObject (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::Thread * | currentThread (void) const |
| 取得當前執行緒指標 | |
| virtual int | hashcode (void) const |
| 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。 | |
公開方法(Public Methods) 繼承自 ufm::lang::Interface | |
| virtual | ~Interface (void)=default |
| 虛擬析構函式 | |
靜態公開方法(Static Public Methods) | |
| template<size_t N> | |
| static Stacker * | construct (uint64(&buffer)[N]) |
| 在指定的記憶體區域上建構 Stacker 物件 | |
| static Stacker * | construct (void *pointer, int size) |
| 在指定的記憶體區域上建構 Stacker 物件 | |
保護屬性 | |
| ufm::lang::Memory | vMemory |
| 用於堆疊分配的記憶體空間 | |
| uint8 * | vStackPointer |
| 堆疊指針,指向下一個可分配的記憶體位置 | |
| uint32 | vMask |
| 對齊遮罩,用於記憶體對齊 | |
堆疊式記憶體分配器
一個簡單的記憶體堆疊分配器,支援順序分配但不支援個別釋放。 當呼叫 clear() 方法時,所有之前分配的記憶體將一次性釋放。 適合用於臨時性記憶體分配,並在完成後一次性釋放所有資源的情境。
|
inline |
|
inline |
|
noexcept |
|
overridevirtual |
|
overridevirtual |
分配指定大小的記憶體
| size | 要分配的記憶體大小,以位元組(bytes)為單位 |
|
virtual |
分配指定大小的記憶體並返回其 Memory 封裝
| size | 需要分配的記憶體大小(位元組) |
|
overridevirtual |
|
overridevirtual |
從此集合中刪除所有元素(可選操作)
此方法執行後,集合將變為空狀態。請注意,某些容器實作可能不支援此操作。
| 如果容器不支援清空操作,實作類別可能會拋出例外 |
|
inlinestatic |
|
static |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
遍歷集合中所有元素,對每個元素執行指定操作。 若所有元素處理完畢或操作中發生異常則停止。
當操作導致底層資料源發生變動時(未同步處理),其行為未定義。
| action | 對每個元素執行的操作 |
|
overridevirtual |
釋放先前分配的記憶體
| ptr | 要釋放的記憶體指標,此指標必須是由 alloc 方法分配的 |
| size | 要釋放的記憶體大小,某些實作可能需要此參數,預設為 0 |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
返回當前索引的下一個有效索引。
| index | 當前索引 |
如果當前索引已經是最後一個元素,則返回 -1。 如果當前索引無效(如 -1),則返回 0
|
overridevirtual |
返回此集合中的元素數量
如果此集合包含超過 INT_MAX 個元素,則返回 INT_MAX。