我在 Visual Studio 2008 中使用 C++。假设我有这样的结构:
struct StructOfInts
{
int a;
int b;
int c;
};
这意味着要像这样读取和写入:
void Read( std::istream& is, StructOfInts& myStruct )
{
is.read( (char*)&myStruct.a, sizeof myStruct.a );
is.read( (char*)&myStruct.b, sizeof myStruct.b );
is.read( (char*)&myStruct.c, sizeof myStruct.c );
}
void Write( std::ostream& os, StructOfInts& myStuct )
{
os.write( (char*)&myStruct, sizeof myStruct );
}
上面的代码在读取或写入文件时会导致某种内存损坏吗?通过内存损坏,我的意思是读入了不正确的值。我正在尝试确定正在读入的 -1.#QNB 值的来源,并且想知道这是否是原因。另外,如果我使用 pragma pack 打包结构会有什么不同吗?