使用Boost序列化递归shared_ptr时失败问题求助
Hey folks, here's a sample code snippet that shows class B inheriting from class A, with A's constructor holding a shared_ptr pointing to an instance of B:
#include <fstream> #include <iostream> // #include <boost/archive/text_iarchive.hpp> // #include <boost/archive/text_oarchive.hpp> #include <boost/archive/xml_iarchive.hpp> #include <boost/archive/xml_oarchive.hpp> #include <boost/archive/tmpdir.hpp> #include <boost/filesystem.hpp> #include <boost/serialization/shared_ptr.hpp> // ... 后续代码可在此处补充
小提醒
这种设计要特别留意循环引用问题:如果B(或其成员)也持有A的shared_ptr,会导致两者的引用计数永远无法归0,进而引发内存泄漏。如果要用Boost序列化处理这类结构,需要显式处理循环引用,比如借助boost::serialization::object_id或者启用跟踪机制来让序列化库识别对象间的循环依赖。
内容的提问来源于stack exchange,提问作者B. A. Sylla
相关产品推荐
相关产品推荐

