我有一个包含指向打开文件的文件句柄 fHandle
的类。现在,它可以被多个例程中的任何一个关闭,这是基于程序的动态运行。
为确保文件确实已关闭,我在析构函数中放入了一个简单的片段:if(fHandle!=NULL) fclose(fHandle);
。事实证明,如果其中一个例程之前关闭了该文件,那么运行析构函数片段会导致双重释放操作,并且我会收到 **glib detected**
错误消息。
我如何确保不关闭之前已关闭的文件句柄(除了检查 NULL
)?
最佳答案
你说你试过了:
if(fHandle!=NULL) fclose(fHandle);
为了避免双重 fclose()
,只需将 fHandle
设置为 NULL
,无论您在何处调用 fclose
在该句柄上,因此析构函数中的上述代码不会通过条件测试....
关于c++ - 先前关闭的文件句柄上 fclose() 的双重释放错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12811464/