CRT デバッグ関数

3ds Max 2012 では、いくつかの診断ツールが追加されました。

これらのツールは、SDK サンプルの maxscript サブディレクトリ <maxsdk>¥samples¥maxscript¥Diagnostics¥MxsDebugCRT.cpp にあります。

このファイルには、MAXScript を使用して診断とテストを行うための、いくつかの強力な MaxScript メソッドが含まれています。

CRTCorruptHeap <int>offset

このメソッドは、ヒープを破壊します。危険です。テストのみに使用してください。

オフセット パラメータは、ポインタの最後をどれだけ過ぎた場所までランダムな書き込みを行うかを定義します。数値が大きいと後でランダムにクラッシュしない傾向があります。単にメモリのランダムな場所が破壊され、アプリケーションがクラッシュする場合とそうでない場合があります。

CRTCheckMemory()

CRT(C Run-Time)デバッグ関数 _CrtCheckMemory の MAXScript ラッパー

MSDN より

デバッグ ヒープに割り当てられたメモリ ブロックの整合性を確認します(デバッグ バージョンだけ)。

関数 : メモリ デバッグ 管理者

ベース そして 毎 メモリ ブロック. 基になるベース ヒープ、

デバッグ ヘッダー情報、上書きバッファのいずれかでエラーまたはメモリの不整合が発生した場合、

_CrtCheckMemory はデバッグ レポートを生成し、エラー状態を示す情報を出力します。

_DEBUG が未定義の場合、_CrtCheckMemory の呼び出しは前処理で削除されます。

この関数は、以前の MAXScript メソッドによって作成されたヒープ破壊を検出するために使用します。実際には、数バイト(1 ~ 6)のみの小さなヒープ破壊のみを検出します。

これは、すべてのデバッグ ヒープ割り当ては、各ヒープ割り当てをラップするガード バイトの小さな領域(約 4 バイト)であるためです。数バイトよりも大きいものは、他のいくつかのポインタ バイトを破壊するため、このメソッドはあまり適切に機能しません。

CRTCheckAssert <int>choice

これは単に 2 つのアサートの 1 つを発生させます。

引数に 1 を渡すと、max ソース コード Maxutil.dll で実装されているアサートが発生します。これは、maxsdk:(assert1.h)にある DbgAsset マクロに対応します。

2 インチ C ランタイム ( バージョン