メモリ リークの検出と特定
更新 : 2007 年 11 月
This topic applies to:
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
ネイティブのみ |
|||
Standard |
ネイティブのみ |
|||
Pro/Team |
ネイティブのみ |
表の凡例 :
対象 |
|
該当なし |
|
既定で非表示のコマンド |
メモリを動的に割り当てたり解放したりする機能は、C/C++ プログラミングの最も強力な機能の 1 つです。ただし、最大の長所は最大の弱点にもなりえます。このことは、C/C++ アプリケーションに関して確かに事実であり、メモリ処理において発生する問題は最も発生頻度の高いバグに分類されています。
最も微妙で検出しにくいバグの 1 つがメモリ リークです。メモリ リークとは、割り当て済みのメモリを正しく解放できない状態を指します。わずかなメモリ リークが 1 回だけ発生する場合は、問題として認識されないこともあります。しかし、大量のメモリ リークが発生したり、メモリ リークが累積する類のプログラムでは、パフォーマンスの低下 (しかも低下が進行する) から完全なメモリ不足まで、さまざまな兆候が現れる可能性があります。さらに悪いことに、メモリ リークの発生原因であるプログラムが大量のメモリを消費してしまうため、別のプログラムにも問題が波及し、問題の本当の原因を究明することが困難になります。また、さして問題とならないメモリ リークでも、別の問題の兆候を示している可能性があります。
Visual Studio のデバッガと C ランタイム (CRT) ライブラリには、メモリ リークを検出および識別するための効率的な手段が用意されています。CRT デバッグ機能を使用してメモリ リークを検出する方法については、次の各トピックを参照してください。
MFC には、MFC プログラムにおけるメモリ リークを検出するために独自の機能が用意されています。詳細については、「MFC でのメモリ リークの検出」を参照してください。