MLK.RET.MUST

メモリ リーク

割り当て済みメモリが関数から返されても任意の変数に割り当てられないと、MLK.RET.MUST 指摘が報告されます。割り当て済みメモリは、この時点で失われます。

脆弱性とリスク

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

脆弱コード例

コピー
  void* alloc_data()
  {
    return malloc(10);
  }

  void foo()
  {
    alloc_data();
  }

Klocwork は、関数 'alloc_data' により割り当てられた動的メモリが 8 行目で失われていることを示すメモリリークのレポートを生成します。

修正コード例

コピー
  void* alloc_data()
  {
    return malloc(10);
  }

  void foo()
  {
    void* ptr = alloc_data();
    free(ptr);
  }