オープン・ファイル・ハンドル・リーク

ファイルがオープンされましたが、クローズされていません。

ファイルがオープンされると、入出力データバッファーとしてリソースのセットが取得されます。ファイルがクローズされないと、これらのリソースは解放されません。オペレーティング・システムでは、同時に開くことができる最大ファイル数が制限されています。この制限を越えると、それ以降のオープンに失敗します。そのため、不要なファイルはクローズする必要があります。特に実行に時間のかかるプロセスでは、これは重要です。

ID

問題箇所

説明

1

リソースの割り当て

ファイルがオープンされた場所

2

リソースリーク

ファイル・ハンドル・リークが発生した場所

          
#include <stdio.h> 

int main(int argc, char **argv)
{
    int num_open_files = -1;
    char file_name[20] = "file";
    FILE *fp;
    do {
        sprintf(file_name + 5, "%08d", num_open_files++);
        fp = fopen(file_name, "w");
    } while (fp != 0);
    printf("Maximum number of open files = %d\n", num_open_files);
}
        

© 2010 Intel Corporation. 無断での引用、転載を禁じます。