我有以下結構讀/寫一個複雜的結構爲二進制文件
typedef struct a_t
{
vector <int> a;
int p;
}a;
typedef struct b_t
{
a x;
int y;
}b;
結構被一個結構含有的載體,結構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 * * 中止(核心轉儲)」 旁,不會將結構寫入文件。
在可能的情況下,'std :: array'更傾向於'std :: vector'。 'std :: vector'管理動態分配的內存,而'std :: array'沒有。在這種情況下,它會使完成此操作的幼稚方法(轉換爲char /和寫/讀)工作。 – Kevin 2016-08-26 22:56:00