SophiaFramework UNIVERSE 5.3 |
SFDWatcher クラスは、全てのメモリ操作を記録します。
携帯端末上では何も動作しません。
パブリック関数 | |
---|---|
static Void |
dumpleak( Void ) 解放されていないヒープに関する情報を表示します。
|
static Void |
dumpuse( Void )
現在の総ヒープサイズと、それまでの総ヒープサイズの最大値を表示します。
|
static Void |
free(
VoidPtr address
) ヒープを解放します。
|
static VoidPtr |
malloc(
UInt32 size
, ACharConstPtr file
, SInt32 line
) ヒープを割り当てます。
|
static VoidPtr |
realloc(
VoidPtr address
, UInt32 size
, ACharConstPtr file
, SInt32 line
) ヒープの再割り当てを行います。
|
static Void |
resetlimit( Void ) 総ヒープサイズの上限を撤廃します。
|
static Void |
resetmaximum( Void ) 総ヒープサイズの最大値を、現在の総ヒープサイズに変更します。
|
static Void |
setlimit(
UInt32 size
) 確保できる総ヒープサイズの上限を設定します。
|
static Void |
setrandomize(
Bool active
) 確保したメモリ領域へのランダム データの書き込みを有効または無効にします。
|
static Void |
setwarning(
Bool active
) 不正な引数に対する警告を有効または無効にします。
|
[ public, static ] Void dumpleak(Void);
解放されていないヒープに関する情報を、シミュレータの出力ウィンドウに表示します。
[ public, static ] Void dumpuse(Void);
現在の総ヒープサイズとそれまでの総ヒープサイズの最大値を、シミュレータの出力ウィンドウに表示します。
引数の address に渡したヒープを解放します。
address に null を渡した場合、それ以前に SFDWatcher::setwarning 関数で不正な引数の警告を有効にしていれば、 address の null がシミュレータの出力ウィンドウに表示されます。
[ public, static ] VoidPtr malloc( UInt32 size // 割り当てるヒープのサイズ( バイト単位 ) ACharConstPtr file // 呼び出し元のソースコード名 SInt32 line // 呼び出し元の行番号 );
割り当てられたヒープへのポインタを返します。
ヒープの空きを確認した上で SFXHelper::malloc 関数によりヒープの割り当てを行い、指定した呼び出し元のソース ファイル名と行番号を記録します。
引数の file ( 呼び出し元のソース ファイル名 ) と line ( 呼び出し元の行番号 ) はデバッグ時の目印であり、ユーザーが任意に指定できます。 file に空ポインタを渡すこともできます。
ヒープの割り当てに失敗した場合は空ポインタを返します。 ヒープの空きがなかった場合は、空ポインタがシミュレータの出力ウィンドウに表示されます。
引数の size に 0 が渡された場合、それ以前に SFDWatcher::setwarning 関数によって不正な引数の警告を有効にしていれば、 size に 0 が渡された旨がシミュレータの出力ウィンドウに表示されます。
次は「Test.cpp というソース ファイルの 100 行目」として記録して、ヒープの確保を行う例です。
// 本当のソース ファイル名は HogeHoge.cpp ... // 本当はここが 4096 行目 UInt32Ptr buf = reinterpret_cast<UInt32Ptr>(SFDWatcher::malloc(sizeof(UInt32) * 1000, "Test.cpp", 100)); ...
実際のソース ファイル名と行番号とを記録しながらヒープの確保を行う場合、 MemoryAllocate マクロや new 演算子を使う方が簡単です。
[ public, static ] VoidPtr realloc( VoidPtr address // 以前割り当てられた領域へのポインタまたは空ポインタ UInt32 size // 新たに割り当てるヒープのサイズ( バイト単位 ) ACharConstPtr file // 呼び出し元のソースコード名 SInt32 line // 呼び出し元の行番号 );
新たに割り当てられたヒープへのポインタを返します。
ヒープの空きを確認した上で SFXHelper::realloc 関数によりヒープの再割り当てを行い、指定された呼び出し元のソース ファイル名と行番号を記録します。
ヒープを再割り当てするとき、新たに確保するサイズが以前のサイズよりも大きい場合には、以前の内容が保持されます。
逆に以前のサイズよりも小さい場合には、以前の内容のうち先頭から新たに指定されたサイズまでが保持されます。
address に空ポインタを渡した場合、新規にヒープを割り当てます。動作は SFDWatcher::malloc 関数と同じです。
引数の file ( 呼び出し元のソース ファイル名 ) と line ( 呼び出し元の行番号 ) はデバッグ時の目印で、ユーザーが任意に指定できます。 file に空ポインタを渡すこともできます。
ヒープの割り当てに失敗した場合は空ポインタを返します。 ヒープの空きがなかった場合は、空ポインタがシミュレータの出力ウィンドウに表示されます。
引数の address に空ポインタ以外を渡し、size に 0 を渡した場合、ヒープが解放されます。 動作は SFDWatcher::free 関数と同じです。
[ public, static ] Void resetlimit(Void);
SFDWatcher::setlimit 関数で設定した総ヒープサイズの上限を撤廃します。
[ public, static ] Void resetmaximum(Void);
総ヒープサイズは SFDWatcher::malloc 関数、 SFDWatcher::realloc 関数、 SFDWatcher::free 関数によって変化しますが、SophiaFramework UNIVERSE は最大値を内部に保持しています。
それまでの総ヒープサイズの最大値を破棄して、現在の総ヒープサイズを新たな最大値に変更します。
確保できる総ヒープサイズの上限を設定します。
SFDWatcher::malloc 関数、 SFDWatcher::realloc 関数で確認される空きヒープサイズは、指定したサイズから既に使われている総ヒープサイズを引いたものです。
この関数が呼ばれるまでは、総ヒープサイズの上限はありません。 ( 実際には、 BREW シミュレータの最大のヒープサイズが上限になります )
メモリ領域を確保したときに、ランダム データを書き込むかを設定します。
ランダム データを書き込むことで、シミュレータでデバッグするときにメモリ初期化忘れなどのバグが検出しやすくなります。
OFF の場合、メモリを確保すると null でパディングします。 デフォルトでは ON になっています。
SFDWatcher::malloc 関数、 SFDWatcher::realloc 関数、 SFDWatcher::free 関数の引数に不正な値が設定された場合、シミュレータの出力ウィンドウに表示するかどうかを設定します。
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |