C++ 复杂类型的序列化/反序列化会导致C+中的分段错误+;
我试图使用最简单的序列化/反序列化方法,在序列化过程中将复杂类型写入一个二进制文件,并在反序列化时从该文件中读取。 我的例子中的复杂类型是PFC。 这是负责将对象写入文件的函数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_
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。“为了避免任何问题”什么样的问题?我尝试用同样的方法在二进制文件中编写复杂数据,但对于另一个例子,它成功了,我不知道为什么这次不是这样。