为了了解书中的代码,自己编写了下面这段简单的测试代码。
#include
#include
#include
struct Test
{
int key;
std::string data;
};
int main()
{
Test test;
test.key = 1;
test.data = "Anthony";
std::ofstream fout("D:\\Data.dat", std::ios_base::out | std::ios_base::binary);
fout.write((char*)&test, sizeof Test);
fout.close();
std::ifstream fin("D:\\Data.dat", std::ios_base::in | std::ios_base::app | std::ios_base::binary);
Test test_1;
fin.seekg(0);
fin.read((char*)&test_1, sizeof Test);
std::cout << test_1.key << std::endl;
std::cout << test_1.key << std::endl;
std::cout << test_1.data << std::endl;
std::cout << test_1.data << std::endl;
system("pause");
return 0;
}
这段代码编译没有任何问题,但是出现了运行错误(CE)。而且经调试发现错误实在程序执行return 0;之后才发生的。程序运行截图如下。
运行代码后如下:
再按任意键后如下:
调试后发现的异常为:0x00088538 处(位于 FileStruct.exe 中)引发的异常: 0xC0000005: 写入位置 0xDDDDDDDD 时发生访问冲突。****