Memcheckとは? わかりやすく解説

Memcheck

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/04 02:14 UTC 版)

Valgrind」の記事における「Memcheck」の解説

最もよく利用されている標準ツールはMemcheckである。Memcheckはほぼすべての命令特別な計測用のコード挿入し、「正当性」(初期化が行われるまでは、割り当て済みでないメモリはすべて無効であるか、未定義である)があり、「アドレス可能」(メモリアドレス割り当て済みで、解放されていないメモリブロックを指している)であるかという情報が、それぞれVビットおよびAビット格納されているかを追跡するデータ移動した加工されたりするが、計測用のコードは1ビットレベルで正確であるようにA、Vビット追跡する。他のメモリチェックツール(IBM Rational Purify)などは、対象的に未初期化メモリコピー検出のみ行う(ただし、必ずしも問題があるわけではない)。 さらに、Memcheckは標準のCメモリアロケータを独自の実装置き換え割り当て済みブロック前後にメモリガード(無効に設定されたAビット持っている)を挿入する。この機能により、Memcheckはプログラム割り当てられブロックよりわずかに外側領域読み書きするoff-by-oneエラー検出できる(この問題対す別の対応策として、コンパイラ境界持ったポインタ実装し、特にヒープではなくスタック確保されメモリのメモリエラーの検出漏れ低減させる方法があるが、計測するバイナリコードをすべてリコンパイルする必要がある)。 Memcheckが検出警告可能な問題には、下記のものがある。 初期化されていないメモリ使用 freeされたメモリ読み書き mallocされたブロック終端以降への読み書き メモリリーク こうした機能への代償として性能低下する。Memcheckの元で動作するプログラムValgrindなしで動作する場合比べて5倍から20遅く、より多くメモリ使用するメモリ確保ごとにかなりのメモリ追加消費する)。したがって、ほとんどの開発者は常にMemcheck(あるいは他のValgrindツール)の元でコード走らせることはしない特定のバグ解析したり、(Memcheckが検出可能な種類の)潜在的なバグがないことを検証するために使用するのが最も典型的な方法である。 パフォーマンスペナルティ加えて、Memcheckの重大な制約事項は、ヒープメモリに対するチェックツールであり、スタック変数静的変数対す境界違反検出することができない点である。下記コードは、コメントに示すようなエラー存在するにもかかわらずMemcheckでは合格となる。これらの問題検出するためにSGCheckが開発中である。 int Static[5];int main(void) { int Stack[5]; Static[5] = 0; /* Static[0] から Static[4] が存在しStatic[5] は境界外 */ Stack [5] = 0; /* Stack[0] から Stack[4] が存在しStack[5] は境界外 */ return 0;} この種類エラー検出できないと、ソフトウェアバッファオーバーラン生じた場合古典的なスタック破壊脆弱性攻撃に対してセキュリティホールになりうるため、注意が必要である。

※この「Memcheck」の解説は、「Valgrind」の解説の一部です。
「Memcheck」を含む「Valgrind」の記事については、「Valgrind」の概要を参照ください。

ウィキペディア小見出し辞書の「Memcheck」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Memcheck」の関連用語

Memcheckのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Memcheckのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのValgrind (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS