每当我在最后运行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/