我读了很多关于fclose的内容,我有两个问题:
1)我的程序在调用fclose(pFile)后崩溃,即使我检查Pfile不是NULL,并在fclose之后立即将其更改为NULL。 (见下面的代码)
我必须提到,在程序运行的任何时候都不会发生崩溃,但仅在特定情况下,我仍然不知道它们究竟是什么。
崩溃后,我收到一个错误 - 双重免费或腐败(!prev)。 所以我猜这意味着fclose在同一个文件描述符上被调用两次,我不明白这是怎么可能发生的呢? if (NULL != pFile)
{
fclose(pFile);
pFile=NULL;
}
pFile = fopen (fullFilePath.c_str(), "r");
2)我知道在相同的文件描述符上调用fclose两次通常会导致崩溃,但在我有相同文件(假设同一进程有2个线程 - 每个拥有一个文件描述符)。在这种情况下,如果两个线程调用fclose在同一个文件上但通过两个不同的文件描述符,那可以吗?它不会导致崩溃?