提升序列化断言失败

Sla*_*lav 4 c++ serialization boost assert assertion

我使用boost的二进制序列化,直到现在它运行良好.我有std::list指向序列化输出(oarchive)的指针,但序列化在对象的serialize()函数中失败,并带有MSVC的对话框:

R6010 -abort() has been called

并将此类字符串打印到控制台窗口中:

Assertion failed: 0 == static_cast<int>(t) || 1 == static_cast<int>(t), file c:\program files\boost\boost_1_44\boost\archive\basic_binary_oprimitive.hpp, line 91

这是什么意思?

项目非常大,来源是分布式的,所以我不能在这里发布它的代码,但是我试图在简单的项目中模拟这个错误 - 它运行良好有什么奇怪的.

PS我在Windows XP上使用带有MSVC2010EE的boost 1.44.当我在" Debug Error! "窗口上单击" 重试 "时,调试器在序列化行旁边的代码行上显示箭头archive << myList;- 我的意思是在某些析构函数或其他东西上似乎发生了错误.当我在对象serialize()函数中进行更改时 - 它们将在我重建整个项目时被应用(在编译之前清理) - 但是如果我只是编译它(IDE​​显示所有包含已更改头的源都被重新编译) - 没有更改将在运行时发生自上一个版本(我尝试使用printf()) - 这很奇怪.我偶尔会设置一些关键定义吗?

Kar*_*ldt 9

有问题的一行说:

// trap usage of invalid uninitialized boolean which would
// otherwise crash on load.
Run Code Online (Sandbox Code Playgroud)

看起来在某些时候你正在尝试序列化一个bool尚未初始化的.没有进一步的代码,我们无法帮助您找到哪一个.

  • 这意味着你只是声明变量`bool tmp;`而不是初始化它:`bool tmp = 0;` (4认同)