c++ - 先前关闭的文件句柄上 fclose() 的双重释放错误

标签 c++ file-io null

我有一个包含指向打开文件的文件句柄 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/

相关文章:

java - 正确重新组装拆分文件

null - 使用 Entity Framework 4.1 Code First 时,当数据库中为 null 时,默认 bool 为 false

c++ - 高度优化的矩阵乘法代码的 MSVC 和 GCC 之间的性能差异

c++ - 使用 WIN32 读取文本文件

java - 删除csv文件java

C++ 新运算符返回新的意外-Dev-cpp

mysql NULL value in where in CLAUSE

c++ - clang-cl PCH缺少 header 包含错误

用于设置核心亲和性的 C++ 风格?

c++ - 为什么更喜欢 std::vector 而不是 std::deque?