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

27.2. メモリ追跡機能

C++ 言語の全てのメモリ操作について、BREW シミュレータ上でのメモリの追跡が可能です。

27.2.1. MemoryAllocate マクロ

MemoryAllocate マクロは、BREW シミュレータ上でのメモリ追跡が可能なメモリ割り当て機能を提供します。

[Caution] 注意
MemoryAllocate マクロはメモリを初期化しません。

TARGET_ENVIRONMENT_SIMULATOR マクロが定義されている場合は SFDWatcher::malloc に、 TARGET_ENVIRONMENT_PHYSICAL マクロが定義されている場合は SFXHelper::malloc に 置き換えられます。

使用例

SInt16Ptr p = reinterpret_cast<SInt16Ptr>(MemoryAllocate(sizeof(SInt16) * 256));
[Note] 注意
上のコードでは SInt16 256個分のメモリを確保しています。
[Caution] 注意
SophiaFramework UNIVERSE では、BREW ヘルパー関数の MALLOC 関数と ERR_MALLOC 関数の代わりに MemoryAllocate マクロを使います。

27.2.2. MemoryReallocate マクロ

MemoryReallocate マクロは、BREW シミュレータ上でのメモリ追跡が可能なメモリ再割り当て機能を提供します。

TARGET_ENVIRONMENT_SIMULATOR マクロが定義されている場合は SFDWatcher::realloc に、 TARGET_ENVIRONMENT_PHYSICAL マクロが定義されている場合は SFXHelper::realloc に 置き換えられます。

[Caution] 注意
MemoryReallocate マクロはメモリを初期化しません。

使用例

SInt16Ptr p = reinterpret_cast<SInt16Ptr>(MemoryAllocate(sizeof(SInt16) * 256));
...
p = reinterpret_cast<SInt16Ptr>(MemoryReallocate(p, sizeof(SInt16) * 4096));
[Note] 注意
SInt16 256 個分のメモリを確保した後に、SInt16 4096 個分の領域を広げます。
[Caution] 注意
SophiaFramework UNIVERSE では、BREW ヘルパー関数の REALLOC 関数と ERR_REALLOC 関数の代わりに MemoryReallocate マクロを使います。

27.2.3. MemoryFree マクロ

MemoryFree マクロは、BREW シミュレータ上でのメモリ追跡が可能なメモリ解放機能を提供します。

TARGET_ENVIRONMENT_SIMULATOR マクロが定義されている場合は SFDWatcher::free に、 TARGET_ENVIRONMENT_PHYSICAL マクロが定義されている場合は SFXHelper::free に 置き換えられます。

使用例

SInt16Ptr p = reinterpret_cast<SInt16Ptr>(MemoryAllocate(sizeof(SInt16) * 256));
...
MemoryFree(p);
[Note] 注意
予め確保されたメモリ領域を解放しています。
[Caution] 注意
SophiaFramework UNIVERSE では、BREW ヘルパー関数の FREE 関数の代わりに MemoryFree マクロを使います。

27.2.4. new / delete 演算子

下表のように、new / delete 演算子によって呼ばれる関数は メモリ追跡機能の有無に関する TARGET_ENVIRONMENT_SIMULATOR / TARGET_ENVIRONMENT_PHYSICAL マクロの定義に依存します。

表 27.2. new / delete 演算子によって呼ばれる関数

演算子 TARGET_ENVIRONMENT_SIMULATOR (メモリ追跡機能有効) TARGET_ENVIRONMENT_PHYSICAL (メモリ追跡機能無効)
new SFDWatcher::malloc SFXHelper::malloc
delete SFDWatcher::free SFXHelper::free
[Caution] 注意
コンストラクタで初期化の記述をしないと、new 演算子はメモリを初期化しません。

27.2.5. メモリ関連 BREW ヘルパー関数

SophiaFramework UNIVERSE では、メモリの割り当てや解放に関連する BREW ヘルパー関数を使えません。

表 27.3. SophiaFramework UNIVERSE で使えない BREW ヘルパー関数と、その代替としてのマクロ、演算子、関数またはクラス

使えないヘルパー関数 代替のマクロ・演算子・関数・クラス
MALLOC、ERR_MALLOC MemoryAllocate / new
REALLOC、ERR_REALLOC MemoryReallocate
FREE MemoryFree / new
STRDUP、ERR_STRDUP SFXAnsiString
WSTRDUP SFXWideString

27.2.6. BREW シミュレータ上でのメモリ追跡機能

TARGET_ENVIRONMENT_SIMULATOR マクロが定義されているときに、 メモリ操作について SFDWatcher クラスを使うと、BREW シミュレータ上でメモリを追跡できます。

参照: SFDWatcher