
warning: leak of FILE ‘fp’
[CWE-775]
警告: fopenしたらfcloseしないとメモリリークする
[-Wanalyzer-file-leak]
■fcloseを忘れてメモリリークした事例
#include <stdio.h>
#include <string.h>
void DEBUG_log(char *str){
FILE *fp = fopen("DEBUG.log","a");
fprintf(fp,"%s",str);
//fclose(fp); 忘れた!
}
int main(void){
for(int i = 0; i<100;i++){
char log[256];
sprintf(log,"%s:%d id=%d\n",
__func__,__LINE__,i);
DEBUG_log(log);
}
}
単体試験の時は見かけ上問題もなく動作していたのが、
結合試験などで
何度もfopen()を実行して
fclose()していないので
リソース不足でシステム異常を起こし
問題が発覚する場合があります。
