私は次の構造体を持っています
typedef struct a_t
{
vector <int> a;
int p;
}a;
typedef struct b_t
{
a x;
int y;
}b;
構造体aはベクトルを含む構造体であり、構造体bは構造体を含みます。構造体bをバイナリファイルに書き込み/読み取ります。次のコードは機能しません
int main()
{
b m;
m.x.a.push_back(1);
m.x.a.push_back(2);
m.x.a.push_back(3);
m.x.p = 5;
m.y = 7;
cout << sizeof(m.y) << endl;
cout << sizeof(m.x) << endl;
cout << sizeof(m) << endl;
ofstream outfile("model",ios::out|ios::binary);
outfile.write((char*)&m,sizeof(m));
outfile.close();
b p;
ifstream iffile("model", ios::in|ios::binary);
iffile.read((char*)&p,sizeof(a));
iffile.close();
cout << p.y << endl;;
cout << p.x.p << endl;
cout << p.x.a[0] << endl;
cout << p.x.a[1] << endl;
cout << p.x.a[2] << endl;
return 0;
}
エラーメッセージは「*glibcが検出されましたダブルフリーまたは破損(上):0x0000000000504010 * *中止(コアダンプ) "の横に、構造体をファイルに書き込みません。