C++ 复杂类型的序列化/反序列化会导致C+中的分段错误+;

C++ 复杂类型的序列化/反序列化会导致C+中的分段错误+;,c++,c,serialization,segmentation-fault,C++,C,Serialization,Segmentation Fault,我试图使用最简单的序列化/反序列化方法,在序列化过程中将复杂类型写入一个二进制文件,并在反序列化时从该文件中读取。 我的例子中的复杂类型是PFC。 这是负责将对象写入文件的函数 void SerializeCurve(const char* file_name, PFC& data) // Writes the given Curve data to the given file name. { ofstream out; out.open(file_

我试图使用最简单的序列化/反序列化方法,在序列化过程中将复杂类型写入一个二进制文件,并在反序列化时从该文件中读取。 我的例子中的复杂类型是PFC。 这是负责将对象写入文件的函数

void SerializeCurve(const char* file_name, PFC& data) // Writes the 
 given Curve data to the given file name.
{
        ofstream out;
        out.open(file_name,ios::out|ios::binary);
        out.seekp(0);
        out.write((char*)&data, sizeof(PFC));
        out.close();
};
这个从文件中读取

void DeserializeCurve(const char* file_name, PFC& data) // Reads the given file and assigns the data to the given OBJECT.
{

    ifstream in;

    in.open(file_name,ios::in|ios::binary);
    in.seekg(0);
    in.read((char*)&data, sizeof(PFC));

    in.close();

};
在调试后的主函数中,我发现当我使用反序列化对象时,会出现分段错误,否则一切都很好

int main()
 {

  Big test;
  PFC pfc(AES_SECURITY);  /* initialise pairing-friendly curve*/
  /*TODO: Serialize pfc and send it */
  test=pfc.order();
  cout << "first order" << test << endl;
  PFC pfc2(90);
  SerializeCurve("Curve.bin",pfc);

  /*Test part*/
  DeserializeCurve("Curve.bin",pfc2);
  test=pfc2.order(); // THIS CAUSES THE SEGMENTATION FAULT
  cout << "second order " << test<< endl;


  return 0;
  }
intmain()
{
大考验;
PFC PFC(AES_安全);/*初始化配对友好曲线*/
/*TODO:序列化pfc并发送它*/
测试=pfc.订单();

为什么你觉得有必要去寻找?为了避免可能发生的任何问题,你不能
编写一个复杂的数据结构。自己找出原因。提示:如果可以,没有人需要boost::Serialization。“为了避免任何问题”什么样的问题?我尝试用同样的方法在二进制文件中写入复杂数据,但在另一个例子中,我不知道为什么这次不是这样。为什么你觉得有必要寻找?为了避免可能发生的任何问题,你不能
复杂的数据结构。自己找出原因。提示:如果可以,no需要boost::Serialization。“为了避免任何问题”什么样的问题?我尝试用同样的方法在二进制文件中编写复杂数据,但对于另一个例子,它成功了,我不知道为什么这次不是这样。