EN JP CN

MLK.MUST

MLK.MUST

メモリ リーク

プログラムは前回の割り当て済みメモリを解放しませんでした。動的メモリへの参照は、この時点で失われます。

脆弱性とリスク

メモリリークは、アプリケーションで余分なメモリを消費させます。これによって他のアプリケーションが使用できるメモリ量が減り、結果的に、オペレーティングシステムにページングを開始させ、システム速度を低下させます。重大な場合、アプリケーションがメモリ制限に達して、クラッシュする可能性があります。

例 1

1  class A{
2     void foo();
3  };
4   void A::foo()
5   {
6     int *ptr = new int;
7     *ptr = 25;
8     ptr = new int;
9     *ptr = 35;
10  }

Klocwork は 8 行目についてメモリリークレポートを生成し、6 行目で関数 'new' により割り当てられ、'ptr' に保存されている動的メモリが、8 行目で失われることを示します。上記の例では、10 行目についてもう1つのメモリリークがレポートされています:8 行目で関数 'new' により割り当てられ、'ptr' に保存されている動的メモリが、10 行目で失われます。