утечка обнаружена с помощью Valgrind при использовании Fopen - PullRequest
4 голосов
/ 29 августа 2010

gcc 4.4.4 c89 valgrind 3.5.0.

При открытии файла с помощью указателя файла обнаружена утечка.

==17681==    in use at exit: 352 bytes in 1 blocks
==17681==    total heap usage: 1 allocs, 0 frees, 352 bytes allocated
==17681== 
==17681==    352 bytes in 1 blocks are still reachable in loss record 1 of 1
==17681==    at 0x4005BDC: malloc (vg_replace_malloc.c:195)
==17681==    by 0xAAD67E: __fopen_internal (iofopen.c:76)
==17681==    by 0xAAD74B: fopen@@GLIBC_2.1 (iofopen.c:107)

Строка кода, на которую он указывает, это fopen:

FILE *fp = NULL;
fp = fopen("input.txt", "r");
if(fp == NULL) {
    fprintf(stderr, "Failed to open file [ %s ]\n", strerror(errno));
    exit(1);
}

Может быть, функция fopen выделяет память, а не освобождает ее? Как я могу освободить эту память?

Большое спасибо за любые предложения,

Ответы [ 2 ]

6 голосов
/ 29 августа 2010

Вы не закрыли свой файл *.

1 голос
/ 29 августа 2010

Я думаю, это освободит его, если вы позвоните fclose в файл.

...