在我的代码中,我必须保留一个持久的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/