gpt4 book ai didi

c++ - 尝试使用 Boost 序列化库时出错

转载 作者:太空宇宙 更新时间:2023-11-04 14:19:05 24 4
gpt4 key购买 nike

我制作了一个重现问题的简单程序:

#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/serialization.hpp>
#include <boost/tuple/tuple.hpp>
#include <sstream>
#include <iostream>

template<typename T>
std::string serialize(const T & value)
{
std::ostringstream oss;
boost::archive::text_oarchive oa(oss);
oa << value;
return oss.str();
}

template<typename T>
T deserialize(const std::string & buffer)
{
std::istringstream iss(buffer);
boost::archive::text_iarchive ia(iss);
T ret;
ia >> ret;
return ret;
}

struct MyClass
{
MyClass() {}
MyClass(const std::string & name) : name(name) {}

template<class Archive>
void serialize(Archive & ar, const unsigned int)
{
ar & name;
}

std::string name;
};

int main()
{
MyClass myClass("Test");
std::string serialized = serialize(myClass);
std::cout << "Serialized: " << serialized << std::endl;
MyClass deserialized = deserialize<MyClass>(serialized);
std::cout << "Name after deserialization: " << deserialized.name << std::endl;
}

代码编译正常,但在运行时出现以下错误:

Serialized: 22 serialization::archive 9 0 0 4 Test
test(74010) malloc: *** error for object 0x109bf55e0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

在调试器中,我可以看到错误发生在 boost 尝试反序列化 name 变量时。

谁能帮我弄清楚我做错了什么?

更新

我在 Mac OS X Lion 上使用 GCC 4.6.2 (g++-mp-4.6 (GCC) 4.6.2) 和 boost 版本 1.48。两者均通过 MacPorts 安装。

命令行是:

g++ -o test -I/opt/local/include -L/opt/local/lib main.cpp -lboost_serialization

您可以在此处 check out subversion 的代码:http://stacked-crooked.googlecode.com/svn/trunk/Playground/Serialization .

更新

我在 Linux GCC 4.6.1 和 boost 1.48 上测试过,运行良好。这一定是我在 Mac 上的配置所特有的问题。

最佳答案

事情是这样的:

  1. Boost 由 MacPorts 使用内置的 Apple GCC 4.2 构建。
  2. 我正在使用非 Apple GCC 4.6.2(也从 MacPorts 获得)编译我的程序。
  3. 在运行时加载的 boost 二进制文件与我的二进制文件不兼容。
  4. 崩溃!

关于c++ - 尝试使用 Boost 序列化库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9040549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com