使用 Boost::序列化时内存访问冲突
Memory access violation when using Boost::Serialization
我正在尝试使用 Boost 的序列化库进行序列化,但它们总是失败并出现相同的无用运行时错误。例如,假设我有一个简单的结构:
struct test {
unsigned int value;
template<class Archive>
void serialize(Archive & ar, unsigned int const version)
{
ar & BOOST_SERIALIZATION_NVP(value);
}
};
这编译得很好。然后,我正在执行将test
类型的对象保存到存档并再次加载回来的往返行程。
BOOST_AUTO_TEST_CASE(test_serialization)
{
test a{42};
stringstream ss;
text_oarchive oa(ss);
oa << BOOST_SERIALIZATION_NVP(a);
}
// ... lots of other tests that pass fine
这也编译得很好。但是,我在运行套件时收到以下错误。
Entering test case "test_serialization"
unknown location(0): fatal error in "test_serialization": memory access violation at address: 0x00000038: no mapping at fault address
Test is aborted
除涉及序列化的测试外,所有其他测试都按预期运行。
什么可能导致问题?
我的设置:
Ubuntu 14.04
boost 1.57 / boost 1.58
clang 3.4 / gcc 4.8.2
与-lboost_serialization -lboost_unit_test_framework
一起建造 .
由于我有多个 boost 安装,因此包含的 boost 标头来自版本 1.57/1.58,而libboost_serialization.so
库来自 1.54 版本。
我用-L/actual/latest/boost/lib/path -lboost_serialization -lboost_unit_test_framework
重新编译,它奏效了。
相关文章:
- C++尝试深度复制唯一指针时出现内存访问冲突
- C++中的内存分配(引发异常:读取访问冲突)
- 使用加速进程间创建消息队列 - 内存访问冲突
- C 指针转换会导致内存访问冲突
- 为什么创建进程 API 调用会导致内存访问冲突?
- 使用 std::map 作为本地成员的内存访问冲突
- 编译哈希算法时出现内存访问冲突错误
- 使用内存访问冲突错误
- 堆栈引发内存访问冲突
- 使用 Boost::序列化时内存访问冲突
- 调用std::vector::empty()时内存访问冲突读取位置
- 基于 SAPI 的应用程序在枚举令牌时引发内存访问冲突
- 内存访问冲突
- 使用 VC++ 中的 Try 和 catch 块捕获内存访问冲突
- 对象向量中的内存访问冲突
- "detects_simple_anagram"中的致命错误:地址 0x00000000 处的内存访问冲突:故障地址处没有映射
- 内存访问冲突插入结构在树结构c++
- c++内存访问冲突
- MotorBee dll和c++,内存访问冲突
- 调用FindConnectionPoint时写入内存访问冲突