当我将结构写入文件时,内存如何在文件中设置?例如,这个结构和函数:
struct vector3D
{
public:
float x, y, z;
vector3D(float modelX, float modelY, float modelZ)
{
x = modelX;
y = modelY;
z = modelZ;
}
vector3D()
{
x = 0;
y = 0;
z = 0;
}
}
inline void writeVector3D(vector3D vec, FILE *f)
{
fwrite((void*)(&vec), sizeof(vector3D), 1, f);
}
这段代码主要是:
vector3D vec(1, 2, 3);
writeVector3D(vec, file);
信息如何在文件中设置?是123
吗?
或者struct有不同的设置?
答案 0 :(得分:2)
您可能需要阅读:
数据的写入顺序与放入内存的顺序相同,包括对齐间隙。
答案 1 :(得分:1)
它将其写为顺序二进制流。
文件的大小结构的大小。
在你的情况下,它会写入总共12个字节(每个浮点数4个字节),它将以这种方式构建:
答案 2 :(得分:0)
您需要预处理器#pragma pack(1)对字节进行字节对齐,否则根据处理器体系结构(32位或64位)进行对齐。另请查看此#pragma pack effect