前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0

11.1. ヒープ管理クラス

11.1.1. メモリ管理

SophiaFramework では、ヒープの確保、管理を専用のクラスで行います。

これらは MALLOC (SFXHelper::MemoryAllocate)、REALLOC (SFXHelper::MemoryReallocate)、FREE (SFXHelper::MemoryFree) 関数の代わりとなります。

SFXHeap ヒープを表すクラスです。
SFXClusterHeap ブロック アロケーションを行うヒープを表すクラスです。
SFXBuffer バッファを表すクラスです。
SFXRingBuffer リングバッファを表すクラスです。

11.1.2. ヒープ管理クラス

SFXHeap クラスと SFXClusterHeap クラスは、ヒープ領域の管理を行うためのクラスです。2 つのクラスの違いはクラスタリングを行うか否かです。

定義

// SInt16 型の配列として使用するヒープ クラス

SFXHeap<SInt16> heap;

// クラスタリングをする場合は SFXClusterHeap<SInt16> heap; とする。
// SFXClusterHeap の使用法は SFXHeap と同じ

ヒープの確保

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

値の設定

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

値の取得

SInt16 m = heap[2]; // m は 300 となる

大きさの取得

SInt16 n = heap.GetSize(); // n は 256 となる

大きさの変更

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

ポインタの取得

// ヒープを指すポインタを取得。このポインタを用いて直接書き込みができる
SInt16Ptr p = static_cast<SInt16Ptr>(heap);

ヒープ使用後の処理

// 何もする必要がない

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