我有VC ++ 2012,并注意到如果有类似
的东西struct mystruct{
char a[100];
__int64 b; };
然后sizeof(mystruct)将产生112。
为什么会这样?
答案 0 :(得分:1)
必须添加填充。考虑:
mystruct *a = (mystrct *) malloc (16 * sizeof (mystruct));
如果没有填充,则某些64位整数不会对齐。
如果您需要特定二进制格式的数据,则必须编写代码以将该数据置于该二进制格式中。不要偶然或通过魔法来做这件事。编写能够精确生成文件中所需字节的代码。
答案 1 :(得分:1)
这是为什么?简短回答,记忆调整。