前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3

14.2. ヒープクラス

ヒープクラスは、BREW ヘルパー関数である MALLOC 関数、REALLOC 関数、FREE 関数の機能をカプセル化したクラスです。

SFXHeap とブロックアロケーションをサポートする SFXClusterHeap があります。

これらは MALLOC(SFXHelper::malloc) 関数、REALLOC(SFXHelper::realloc) 関数、FREE(SFXHelper::free) 関数の代わりとなります。

参照: BREW API MALLOC | BREW API REALLOC | BREW API FREE

例 14.1. ヒープの定義

// SInt16 型の配列として定義されたヒープ
SFXHeap<SInt16> heap;

// ブロックアロケーションを使う場合は SFXClusterHeap<SInt16> heap; とする
// SFXClusterHeap の使用法は SFXHeap と同じ

例 14.2. ヒープの確保

heap.Resize(sizeof(SInt16) * 128);  // BREW ヘルパー関数の MALLOC 関数を呼び出して 256 バイトのヒープを割り当てるのと同等
[Note] MALLOC 関数

SophiaFramework UNIVERSE では、BREW ヘルパー関数の MALLOC 関数の代わりに BREW シミュレータ上でのメモリ追跡が可能な MemoryAllocate マクロを使います。

参照: BREW API MALLOC

例 14.3. ヒープへの値の設定

heap[0] = 100;
heap[1] = 200;
heap[2] = 300;
heap[3] = 400;

例 14.4. ヒープからの値の取得

SInt16 m = heap[2]; // m = 300

例 14.5. ヒープサイズの取得

SInt16 n = heap.GetSize(); // n = 256

例 14.6. ヒープサイズの変更

heap.Resize(16);  // BREW ヘルパー関数の REALLOC 関数を呼び出して 16 バイトのヒープを再割り当てするのと同等
[Note] REALLOC 関数

SophiaFramework UNIVERSE では、BREW ヘルパー関数の REALLOC 関数の代わりに BREW シミュレータ上でのメモリ追跡が可能な MemoryReallocate マクロを使います。

参照: BREW API REALLOC

例 14.7. ヒープポインタの取得

// ヒープを指すポインタを取得し、このポインタを使用して書き込む
SInt16Ptr p = static_cast<SInt16Ptr>(heap.GetHeap());

例 14.8. ヒープ使用後の処理

// 何もする必要がない

// 明示的に解放するには
 heap.Free();  // BREW ヘルパー関数の FREE 関数を呼び出してヒープを解放するのと同等
[Note] FREE 関数

SophiaFramework UNIVERSE では、BREW ヘルパー関数の FREE 関数の代わりに BREW シミュレータ上でのメモリ追跡が可能な MemoryFree マクロを使います。

参照: BREW API FREE