使用fopen时使用valgrind检测到泄漏

时间:2010-08-29 10:35:33

标签: c valgrind

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函数正在分配内存并且没有释放它吗?我怎样才能释放这段记忆?

非常感谢任何建议,

3 个答案:

答案 0 :(得分:6)

您没有删除您的文件*。

答案 1 :(得分:1)

如果您在文件上调用fclose,我猜它会释放它。

答案 2 :(得分:1)

我遇到了同样的问题

我用fflush()解决了

// Stream needs to be flushed before closing
fflush ( fp);

fclose( fp);