即使在NULL检查后fclose也会导致崩溃

时间:2015-12-02 14:45:08

标签: multithreading file crash file-descriptor fclose

我读了很多关于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在同一个文件上但通过两个不同的文件描述符,那可以吗?它不会导致崩溃?

0 个答案:

没有答案