小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


【cppcheck】(error) Resource leak: fp

はじめに

C++の静的解析ツール「cppcheck」でソースコードを静的解析した場合に、以下の警告がでることがあります。

(error) Resource leak: fp

cppcheckのバージョン
  • v1.65
サンプルプログラム

以下のソースプログラムを解析にかけると表示されます。

#include "stdafx.h"
#include <windows.h>
#include <stdlib.h>

int _tmain(int argc, _TCHAR *argv[])
{
  FILE *fp;
  errno_t error;
  char buf[256];

  if ((fp = fopen("C:\\foo.txt", "r")) == NULL)
  {
    printf("%s", "fopenエラー");
    return EXIT_FAILURE;
  }

  memset(buf, 0, sizeof(buf));
  while (fgets(buf, 256, fp) != NULL)
  {
    printf("%s", buf);
  }

  //fclose(fp);  //-> (error) Resource leak: fp

  return 0;
}

上記のように、fopenしたファイルポインタをfcloseしていない場合に警告が表示されます。