c++ - 删除boost归档对象还会删除与其关联的流吗?

标签 c++ boost delete-operator ofstream

在我的代码中,我必须保留一个持久的boost::oarchive对象来编写。所以我有一个writer类,该类保留ostream的指针和boost::oarchive指针说-ofstream *fs = new ofstream();boost::archive::binary_oarchive *afs = new boost::archive::binary_oarchive( *fs );我在销毁它们时遇到了问题。这是我在清除函数中释放对象的操作-delete fs;delete afs; #valigrind引发无效读取
Valgrind在此处破坏“afs”时抛出了无效的读取错误-是否不需要“delete fs”?删除增强对象是否也足以释放流对象?

最佳答案

归档文件可能想要在自我销毁之前将某些内容刷新到文件流中,但是您已经关闭了文件流。
因此,请先删除存档,然后再删除您的ofstream。
在大多数情况下,以相反的顺序破坏依赖对象是安全的。

关于c++ - 删除boost归档对象还会删除与其关联的流吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62550963/

相关文章:

java - 从 NativeC/C++ 调用 Java 时无法缓存 JAVA VM

C++ 创建图像

c++ - 这里使用 "delete"真的会删除对象吗?

c++ - GCC 在 Debug模式下崩溃,在 Release模式下运行良好?

C++:尚未声明

c++ - 在 world.iprobe 上 boost MPI 崩溃

c++ - 在没有 AVX 的情况下编译 boost

c++ - 如何 boost::serialize std/boost::optional?

具有私有(private)构造函数的 C++ 单例

c++ - delete[] 一个对象数组