## Tcl8.6.17/Tk8.6.17 Documentation > Tcl Commands > memory

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    memory — Tcl 記憶不具合修復能力の制御 Control Tcl memory debugging capabilities
  構文 SYNOPSIS
  説明 DESCRIPTION
    memory active file
    memory break_on_malloc count
    memory info
    memory init [on|off]
    memory objs file
    memory onexit file
    memory tag string
    memory trace [on|off]
    memory trace_on_at_malloc count
    memory validate [on|off]
  SEE ALSO
  KEYWORDS

### NAME

memory — Tcl 記憶不具合修復能力の制御 Control Tcl memory debugging capabilities

### 構文 SYNOPSIS

memory option ?arg arg ...?

### 説明 DESCRIPTION

この memory 命令はTcl 開発者にTclの記憶域不具合修復能力の制御を与える｡この memory 命令は､下に記述する幾つかの指示項目を有す｡Tcl の機械翻訳時に記憶域不具合修復可能として翻訳され(翻訳時に TCL_MEM_DEBUG が定義される)､且つ､ Tcl_InitMemory が呼ばれた後にのみこの命令が利用できる｡ 　 The memory command gives the Tcl developer control of Tcl's memory debugging capabilities. The memory command has several suboptions, which are described below. It is only available when Tcl has been compiled with memory debugging enabled (when TCL_MEM_DEBUG is defined at compile time), and after Tcl_InitMemory has been called.

memory active file
  現在､配分されている全ての記憶域のリストを指定された file に書く｡ Write a list of all currently allocated memory to the specified file.

memory break_on_malloc count
  count 個の配分が完了した後､ckalloc はその旨と､今やＣ不具合修復に入ろうと試るとの伝言文を出力する｡ Tcl は自身に対し SIGINT 信号を発信する｡もし使用者が､Tcl を Ｃ言語不具合修復譜の元で実行していたら､不具合修復命令の状態に入ることになる｡ After the count allocations have been performed, ckalloc outputs a message to this effect and that it is now attempting to enter the C debugger. Tcl will then issue a SIGINT signal against itself. If you are running Tcl under a C debugger, it should then enter the debugger command mode.

memory info
  Tcl が始まって以来の全ての配分と解放及び､現在配分されているパケット(現在の ckalloc の呼出し数であって､対応する ckfree の呼出しとは一致しない)及び､現在配分されているバイト及び､パケットと配分されたバイトの最大の数 とを含む報告を返す｡ Returns a report containing the total allocations and frees since Tcl began, the current packets allocated (the current number of calls to ckalloc not met by a corresponding call to ckfree), the current bytes allocated, and the maximum number of packets and bytes allocated.

memory init [on|off]
  偽のバイトを割り当てられた全ての記憶域の事前初期化を接又は断に｡初期化されていない値の使用を検出するのに便利である｡ Turn on or off the preinitialization of all allocated memory with bogus bytes. Useful for detecting the use of uninitialized values.

memory objs file
  割り当てられたすべてのTcl_Obj値のリストが､割当てられた場所と一緒に､指定されたファイルにすぐさま書き込れる｡値の漏洩を検査するのに便利である｡(訳注 訳がよれている) 　　　 Causes a list of all allocated Tcl_Obj values to be written to the specified file immediately, together with where they were allocated. Useful for checking for leaks of values.

memory onexit file
  全ての割当てられた記憶域のリストが､指定したファイルにTclの記憶域の仔の系の終了時に書込まれる｡ 処理課程が終了する時に､適切に記憶域が刷新されたかを検査する為に便利である｡ 　　 Causes a list of all allocated memory to be written to the specified file during the finalization of Tcl's memory subsystem. Useful for checking that memory is properly cleaned up during process exit.

memory tag string
  ckalloc により記憶域に割付けされたそれぞれのパケットに文字列値の荷札を関連付けさせることができる｡ memory active と memory onexit によって生成され 配分された記憶域のリストの中に､それぞれのパケットへの荷札が他のパケットに関する情報に従って印刷される｡この memory tag 命令は後に続く ckalloc を呼び出す為の荷札の値を string に設定する｡ Each packet of memory allocated by ckalloc can have associated with it a string-valued tag. In the lists of allocated memory generated by memory active and memory onexit, the tag for each packet is printed along with other information about the packet. The memory tag command sets the tag value for subsequent calls to ckalloc to be string.

memory trace [on|off]
  記憶追跡を入か断に設定する｡記憶追跡を入りにすると､全ての ckalloc 呼出しは標準不都合出力に書かれる行の追跡情報であって､単語 ckalloc ､それに続く番地､配分された記憶域の量､C言語の枠の名前､命令実行配分の行番号から構成される｡譬えば: Turns memory tracing on or off. When memory tracing is on, every call to ckalloc causes a line of trace information to be written to stderr, consisting of the word ckalloc, followed by the address returned, the amount of memory allocated, and the C filename and line number of the code performing the allocation. For example:

      ckalloc 40e478 98 tclProc.c 1406

  ckfree への呼出しは同じ方法で追跡される｡ Calls to ckfree are traced in the same manner.

memory trace_on_at_malloc count
  count 回の ckalloc の後の記憶域追跡を許可する｡譬えば､ memory trace_on_at_malloc 100 とすると､100回の ckalloc 呼出しの後に､記憶域追跡情報が始まり､全ての配分と解除が表示される｡問題が発生する迄に多くの回数の記憶域の活動が行われるかもしれないので､もし問題が始まる前に､生じた数多くの配分を識別できれば､この指示項目の思慮ある使用により追跡(と多量の追跡情報生成)による速度低下を減ずることが可能である｡Tclが開始されてからの記憶領域の配分の現在の数は警報区域の失敗の上に印刷される｡ Enable memory tracing after count ckallocs have been performed. For example, if you enter memory trace_on_at_malloc 100, after the 100th call to ckalloc, memory trace information will begin being displayed for all allocations and frees. Since there can be a lot of memory activity before a problem occurs, judicious use of this option can reduce the slowdown caused by tracing (and the amount of trace information produced), if you can identify a number of allocations that occur before the problem sets in. The current number of memory allocations that have occurred since Tcl started is printed on a guard zone failure.

memory validate [on|off]
  記憶域の検証を入か断に設定する｡記憶域の検証が許可になっていると､ckalloc 又は ckfree の呼出し毎に､ckalloc に配分されて現在実在している全ての記憶区域毎に警報区域が検査される｡これは､出来栄えに強い影響があるので､重ね書き問題が強く疑われる時のみ使用するのが望ましい｡記憶域の検証が許可になっていることの利点は､重ね書きが生じたずっと後になって､重ね書きされた警報区域を伴う特定の記憶域が開放されることよりも､寧ろ､重ね書きが生じた後､ckalloc か ckfree の最初の呼出しで警報区域の重ね書きが検出できることである｡　 Turns memory validation on or off. When memory validation is enabled, on every call to ckalloc or ckfree, the guard zones are checked for every piece of memory currently in existence that was allocated by ckalloc. This has a large performance impact and should only be used when overwrite problems are strongly suspected. The advantage of enabling memory validation is that a guard zone overwrite can be detected on the first call to ckalloc or ckfree after the overwrite occurred, rather than when the specific memory with the overwritten guard zone(s) is freed, which may occur long after the overwrite occurred.

### SEE ALSO

ckalloc, ckfree, Tcl_ValidateAllMemory, Tcl_DumpActiveMemory, TCL_MEM_DEBUG

### KEYWORDS

memory, debug
Copyright © 1992-1999 by Karl Lehenbauer and Mark Diekhans
Copyright © 2000 by Scriptics Corporation.