はじめに
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していない場合に警告が表示されます。