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 行目で失われます。