首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试Boost.Serialization地址跟踪

调试Boost.Serialization地址跟踪
EN

Stack Overflow用户
提问于 2014-11-03 10:27:43
回答 1查看 304关注 0票数 2

粗略地说,我有一个对象o和一个指向该对象po = &o的指针,我将其序列化如下:

代码语言:javascript
复制
// Somewhere
ar & o;

// Somewhere else, but after somewhere
ar & po;

在序列化po时,Boost.Serialization应该发现它已经序列化了o,而不是再次序列化*po。我遇到这样的情况:库无法发现这种情况,而是序列化了两次o

不幸的是,在一个简单的例子中,所有复制这种行为的尝试都失败了,原始代码太大了,无法在这里发布。因此,我不需要解决这个问题,而是请求一个指向Boost.Serialization中相关代码部分的指针,该部分跟踪地址,并确定指针是否需要“深度”序列化。我希望我能自己做调试。

当然,任何关于错误可能是什么的最好的猜测也是受欢迎的,但是我不想让你的水晶球太紧张。;-)

顺便说一句,如果相关的话,我使用boost::archive::text_oarchive

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-03 14:02:11

所讨论的代码部分是save_pointer()函数在O档案中。

Boost.Serialization使用两个特性来检查对象是否已经序列化:对象地址和对象类型。地址部分是显而易见的,如果您也考虑到类型部分是有意义的。我的问题是,我没有想过,只检查了这两个地址是否相同。这确实是正确的,但是由于类型不同,序列化库假设它是两个不同的对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26712236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档