2010-08-29 2 views
4

gcc 4.4.4 c89 valgrind 3.5.0.обнаружена утечка с использованием valgrind при использовании fopen

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

==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: [email protected]@GLIBC_2.1 (iofopen.c:107) 

Строка кода она указывает на это Еореп:

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

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

Многие спасибо за любые предложения,

ответ

6

Вы не закрыли свой ФАЙЛ *.

+0

Да, вы правы. Я забыл позвонить бесплатно. – ant2009

+2

Вы не ** ** вызываете 'free' на' FILE * '. Вы называете 'fclose'. –

+0

Я вижу ту же самую ошибку, несмотря на использование 'fclose'. –

1

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