MLK.MUST
メモリ リーク
プログラムは前回の割り当て済みメモリを解放しませんでした。動的メモリへの参照は、この時点で失われます。
脆弱性とリスク
メモリリークは、アプリケーションで余分なメモリを消費させます。これによって他のアプリケーションが使用できるメモリ量が減り、結果的に、オペレーティングシステムにページングを開始させ、システム速度を低下させます。重大な場合、アプリケーションがメモリ制限に達して、クラッシュする可能性があります。
例 1
コピー
class A{
void foo();
};
void A::foo()
{
int *ptr = new int;
*ptr = 25;
ptr = new int;
*ptr = 35;
}
Klocwork は 8 行目についてメモリリークレポートを生成し、6 行目で関数 'new' により割り当てられ、'ptr' に保存されている動的メモリが、8 行目で失われることを示します。上記の例では、10 行目についてもう1つのメモリリークがレポートされています:8 行目で関数 'new' により割り当てられ、'ptr' に保存されている動的メモリが、10 行目で失われます。