删除 boost 存档对象也会删除与其关联的流?
deleting boost archive object also deletes stream associated to it?
在我的代码中,我必须保留一个持久的 boost::oarchive 对象来写入。所以我有一个 writer class 保持 ostream 的指针和 boost::oarchive 指针说 -
ofstream *fs = new ofstream();
boost::archive::binary_oarchive *afs = new boost::archive::binary_oarchive( *fs );
我在销毁它们时遇到问题。这是我在 clear 函数中所做的释放对象的操作 -
delete fs;
delete afs;
#valigrind 抛出无效读取
Valgrind 在此处破坏 'afs' 时抛出无效读取错误 - 'delete fs' 不需要 吗?删除 boost 对象是否足以释放 ofstream 对象?
存档可能想在自毁之前将某些内容刷新到文件流,但您已经关闭了文件流。
所以,先删除存档,然后再删除你的 ofstream。
在大多数情况下,按照与构造相反的顺序销毁依赖对象是安全的。
在我的代码中,我必须保留一个持久的 boost::oarchive 对象来写入。所以我有一个 writer class 保持 ostream 的指针和 boost::oarchive 指针说 -
ofstream *fs = new ofstream();
boost::archive::binary_oarchive *afs = new boost::archive::binary_oarchive( *fs );
我在销毁它们时遇到问题。这是我在 clear 函数中所做的释放对象的操作 -
delete fs;
delete afs;
#valigrind 抛出无效读取
Valgrind 在此处破坏 'afs' 时抛出无效读取错误 - 'delete fs' 不需要 吗?删除 boost 对象是否足以释放 ofstream 对象?
存档可能想在自毁之前将某些内容刷新到文件流,但您已经关闭了文件流。
所以,先删除存档,然后再删除你的 ofstream。
在大多数情况下,按照与构造相反的顺序销毁依赖对象是安全的。