在我的代码库中,有两个功能:
void save(bar::binary_oarchive &ar)
{
bool flag = //some condition
ar & flag;
//do some work
}
void load(bar::binary_iarchive &ar)
{
bool flag = false;
ar & flag;
//do some work
}
现在,我的代码在评估ar & flag
中的load
时崩溃了。
我调试了一下,发现
void load(bool & t){
load_binary(& t, sizeof(t));
int i = t;
BOOST_ASSERT(0 == i || 1 == i);
(void)i; // warning suppression for release builds.
}
将在内部由boost调用。
现在的问题是load_binary(& t, sizeof(t))
以某种方式更改了值t
并将其设置为0和1以外的其他值(在我的情况下,将其设置为8),这导致了BOOST_ASSERT(0 == i || 1 == i)
。 / p>
1。如何确定ar
完成工作后save
的状态。
2。由于load_binary
将t
设置为某个值,我猜这是通过从某个特定偏移量读取ar
来设置的。我实际上如何知道正在读取ar
的哪一部分?(如果我错了,请纠正我)