![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |
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 は最大値を内部に保持しています。
それまでの総ヒープ サイズの最大値を破棄して、現在の総ヒープ サイズを新たな最大値に変更します。
確保できる総ヒープサイズの上限を設定します。
SFDWatcher::malloc 関数、 SFDWatcher::realloc 関数で確認される空きヒープサイズは、指定したサイズから既に使われている総ヒープサイズを引いたものです。
この関数が呼ばれるまでは、総ヒープサイズの上限はありません。 ( 実際には、 BREW シミュレータの最大のヒープサイズが上限になります )
メモリ領域を確保したときに、ランダム データを書き込むかを設定します。
ランダム データを書き込むことで、シミュレーターでデバッグするときにメモリ初期化忘れなどのバグが検出しやすくなります。
OFF の場合、メモリを確保すると null でパディングします。 デフォルトでは ON になっています。
SFDWatcher::malloc 関数、 SFDWatcher::realloc 関数、 SFDWatcher::free 関数の引数に不正な値が設定された場合、シミュレーターの出力ウィンドウに表示するかどうかを設定します。
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|