【发布时间】:2015-09-29 22:33:18
【问题描述】:
注意:我在调试的时候发现,直到最后一行,程序运行正常,但是走到最后一个括号时,会弹出错误窗口。我对 C++ 不太熟悉,所以找不到问题所在。请帮忙!
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
class test {
public:
int x;
void add_list(int);
void display();
private:
vector<int> list;
};
void test::add_list(int op)
{
list.push_back(op);
}
void test::display()
{
cout << x << endl;
for (unsigned int i=0;i<list.size(); i++)
cout << "->" << list[i];
cout << endl;
}
int main (void)
{
test test1;
test1.x = 3;
test1.add_list(2);
test1.add_list(4);
int size = sizeof (test1);
ofstream fout ("data.dat", ios_base::binary);
fout.write((char *)&test1, size);
fout.close();
ifstream fin ("data.dat", ios_base::binary);
test test2;
fin.read((char *)&test2, size);
test2.display();
fin.close();
return 0;
}
【问题讨论】:
-
错误说明了什么?
-
我们需要知道错误有什么帮助。
-
@HaroldHuang 像这样读写非 POD 类型将无法正常工作。您无法使用二进制模式保存或读取这些类型。该对象必须正确序列化。
-
0xC0000005:写入 0xFEEEFEEE 时,发生冲突。
-
@HaroldHuang 错误的原因很可能是您在
read调用中通过向对象写入垃圾来踩到它。阅读我之前的评论。