前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFDWatcher
デバッグのためにメモリ操作を行うクラスです。
#include <SFDWatcher.h.hpp>
class SFDWatcher;
SFMTYPEDEFCLASS(SFDWatcher)

解説

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 )
不正な引数に対する警告を有効または無効にします。

SFDWatcher::dumpleak
解放されていないヒープに関する情報を表示します。
[ public, static ]
Void dumpleak(Void);

解説

解放されていないヒープに関する情報を、シミュレータの出力ウィンドウに表示します。

参照

SFDWatcher::malloc | SFDWatcher::realloc | SFDWatcher::free


SFDWatcher::dumpuse
現在の総ヒープサイズと、それまでの総ヒープサイズの最大値を表示します。
[ public, static ]
Void dumpuse(Void);

解説

現在の総ヒープサイズとそれまでの総ヒープサイズの最大値を、シミュレータの出力ウィンドウに表示します。

参照

SFDWatcher::malloc | SFDWatcher::realloc | SFDWatcher::free | SFDWatcher::resetmaximum


SFDWatcher::free
ヒープを解放します。
[ public, static ]
Void free(
    VoidPtr address   // 解放するヒープへのポインタ
);

解説

引数の address に渡したヒープを解放します。

address に null を渡した場合、それ以前に SFDWatcher::setwarning 関数で不正な引数の警告を有効にしていれば、 address の null がシミュレータの出力ウィンドウに表示されます。

参照

MemoryFree マクロ | new / delete 演算子


SFDWatcher::malloc
ヒープを割り当てます。
[ 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 演算子を使う方が簡単です。

参照

SFXHelper::malloc | MemoryAllocate | new


SFDWatcher::realloc
ヒープの再割り当てを行います。
[ 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 関数と同じです。

参照

SFXHelper::realloc | SFDWatcher::malloc


SFDWatcher::resetlimit
総ヒープサイズの上限を撤廃します。
[ public, static ]
Void resetlimit(Void);

解説

SFDWatcher::setlimit 関数で設定した総ヒープサイズの上限を撤廃します。

参照

SFDWatcher::setlimit | SFDWatcher::malloc | SFDWatcher::realloc


SFDWatcher::resetmaximum
総ヒープサイズの最大値を、現在の総ヒープサイズに変更します。
[ public, static ]
Void resetmaximum(Void);

解説

総ヒープサイズは SFDWatcher::malloc 関数、 SFDWatcher::realloc 関数、 SFDWatcher::free 関数によって変化しますが、SophiaFramework UNIVERSE は最大値を内部に保持しています。

それまでの総ヒープサイズの最大値を破棄して、現在の総ヒープサイズを新たな最大値に変更します。

参照

SFDWatcher::malloc | SFDWatcher::realloc | SFDWatcher::free


SFDWatcher::setlimit
確保できる総ヒープサイズの上限を設定します。
[ public, static ]
Void setlimit(
    UInt32 size   // 総ヒープサイズの上限( バイト単位 )
);

解説

確保できる総ヒープサイズの上限を設定します。

SFDWatcher::malloc 関数、 SFDWatcher::realloc 関数で確認される空きヒープサイズは、指定したサイズから既に使われている総ヒープサイズを引いたものです。

この関数が呼ばれるまでは、総ヒープサイズの上限はありません。 ( 実際には、 BREW シミュレータの最大のヒープサイズが上限になります )

参照

SFDWatcher::resetlimit | SFDWatcher::malloc | SFDWatcher::realloc


SFDWatcher::setrandomize
確保したメモリ領域へのランダム データの書き込みを有効または無効にします。
[ public, static ]
Void setrandomize(
    Bool active   // true = 有効、false = 無効
);

解説

メモリ領域を確保したときに、ランダム データを書き込むかを設定します。

ランダム データを書き込むことで、シミュレータでデバッグするときにメモリ初期化忘れなどのバグが検出しやすくなります。

OFF の場合、メモリを確保すると null でパディングします。 デフォルトでは ON になっています。

参照

SFDWatcher::malloc | SFDWatcher::realloc | SFDWatcher::free


SFDWatcher::setwarning
不正な引数に対する警告を有効または無効にします。
[ public, static ]
Void setwarning(
    Bool active   // true = 有効、false = 無効
);

解説

SFDWatcher::malloc 関数、 SFDWatcher::realloc 関数、 SFDWatcher::free 関数の引数に不正な値が設定された場合、シミュレータの出力ウィンドウに表示するかどうかを設定します。

参照

SFDWatcher::malloc | SFDWatcher::realloc | SFDWatcher::free