前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0

14.2. ヒープクラス

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

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

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

例 14.1. ヒープの定義

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

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

例 14.2. ヒープの確保

// MALLOC ( MemoryAllocate ) 関数と同様に 256 バイトのヒープを確保する
heap.Resize(sizeof(SInt16) * 128);

例 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. ヒープサイズの変更

// REALLOC ( MemoryReallocate ) 関数と同様
heap.Resize(16);

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

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

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

// 何もする必要がない

// 明示的に解放するには
 heap.Free();  // FREE ( MemoryFree ) 関数と同じ