Tclメモリデバッグを可能にするためのコンパイル時のフラグ。解説TclがコンパイルされるときにTCL_MEM_DEBUGを定義しておくことでメモリデバッグをする強力な補助セットは、コンパイルされたバイナリに生成されます。これはメモリ漏洩、メモリ割り当てオーバーラン、及び他のメモリ関連のエラーをデバッグすることを支援するC言語、及びTclファンクションを含みます。メモリデバッグを可能にするメモリデバッグを可能にするためにTCL_MEM_DEBUGを定義したあとに、Tclを最初から再コンパイルしなければなりません。非スタブバージョンTcl_InitMemoryにおいてコンパイルします。TCL_MEM_DEBUGは連結されようとしている全てのモジュールで定義するか、もしくは全てのモジュールで定義しないかで統一しておかなければなりません。しないと(統一定義されなかった場合)TclDbCkfreeとTcl_DbCkalloc、またはTcl_CkallocとTcl_Ckfreeの非定義リンクエラーが発生するからです。Tcl_ValidateAllMemory、Tcl_DumpActiveMemory及びTclのMemoryコマンドはメモリの使用が有効かどうかを調査するために使えるようになります。ckallocへのコールが行われるたびに、メモリデバッグコードで割り当てられたメモリを追跡するために、常に要求されたメモリより僅かですが、多目に割り当ててられます。8バイトの「ガードゾーン」は割り当てられたスペースの前後に追加されて、コール側に返されます。HIGH_GUARD_SIZEによって定義されます。ガードゾーンには既知のパターンが書いておきます。ckfreeへのコールが発生する際に解放されたメモリのガードゾーンの何れかが、何か修正されたかどうかを分析してエラーチェックします。どれか1つが修正されたら該当ガードバイト及びそれらの新しい内容は確認され、そして「Lowガード失敗」か「Hいghガード失敗」メッセージは出力されます。failed)メッセージにはメモリパケット及びファイル名のアドレスckfreeをコールしたコードのライン番号を含みます。的な一度限りの問題を検出することが可能となります。書かれるデータのために十分なスペースは割り当ててられなかった場合です。難しいメモリクラッシュ問題をデバッグする通常の場合はメモリデバッグ有効状態でコンパイルされたTclは、クラッシュ問題を見つけることを容易にできます。メモリ命令によりメモリ妥当性検査をオンにすることは、より難しい問題を見つけることに役立ちます。Tclインタープリタによるコマンドの実行が十分に深く進む前にクラッシュが発生していると疑う場合、MEM_VALIDATEを定義した状態でtclCkalloc.cを再コンパイルし、そしてTclをリビュールトします。これで初めてckallocをコールする時点からメモリ妥当性検査を可能にできます。大きいパフォーマンス低減を引き起こします。Tcl_ValidateAllMemoryを明白に任意のポイントでコールすることができます。intでファイル名、及び呼び出し側のライン番号ですが、それらは実際に必要とする何にでもなりえます。問題を発見した後で忘れずにコールを取り除きましょう。