每当我在最后运行fclose(outputFile);的程序时,就会得到一个错误。检测到glibc…损坏的双链接列表
但令人困惑的是,我在它的正上方有fclose(inputFile);,它工作得很好。有什么建议吗?

FILE* inputFile = fopen(fileName, "r");
if (inputFile == NULL)
{
    printf("inputFile did not open correctly.\n");
    exit(0);
}
FILE* outputFile = fopen("output.txt", "wb");
if (outputFile == NULL)
{
    printf("outputFile did not open correctly.\n");
    exit(0);
}

/* ... read in inputFile ... */
/* ... some fprintf's to outputFile ... */

fclose(inputFile);
fclose(outputFile);

最佳答案

问题可能出现在本节中:

 /* ... read in inputFile ... */

你有一些破坏堆的代码。数组溢出是典型的原因。堆损坏很少在损坏发生时检测到。只有在以后,当一些代码分配或释放内存并内置一些基本的堆健康验证时。就像fclose()一样。

关于c - 无法在输出流上使用fclose,输入流很好,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2797227/

10-13 08:05