为什么__int64在struct中占用12个字节?

时间:2015-02-16 22:15:06

标签: c++ visual-c++

我有VC ++ 2012,并注意到如果有类似

的东西
struct mystruct{
     char a[100];
     __int64 b; };

然后sizeof(mystruct)将产生112。

为什么会这样?

2 个答案:

答案 0 :(得分:1)

必须添加填充。考虑:

mystruct *a = (mystrct *) malloc (16 * sizeof (mystruct));

如果没有填充,则某些64位整数不会对齐。

如果您需要特定二进制格式的数据,则必须编写代码以将该数据置于该二进制格式中。不要偶然或通过魔法来做这件事。编写能够精确生成文件中所需字节的代码。

答案 1 :(得分:1)

这是为什么?简短回答,记忆调整。

答案很长:http://www.catb.org/esr/structure-packing/