内存对齐:假如第一个成员从0地址开始,储存每个成员的地址编号必须能被它的字节数整除,如果不能会填充空字节
内存补齐:如果结构体的总字节数,必须是它最大成员字节数的整数倍,如果不是,则在末尾填充空字节
考点:内存对齐
PS:其实...如果,我将默认内存对齐设置为1,那么7也是可能的
#include<bits/stdc++.h> using namespace std; //修改默认内存对齐数为1,而不是64位中的8 #pragma pack(1) struct demo { char a; short b; int c; }; int main() { demo tt; cout << "sizeof(tt)=" << sizeof(tt) << endl; return 0; } //Linux下64位g++获得结果是1
或许题目中想问的是:在64位机器上,默认内存对齐方式下,有可能的是『因为笔者修改就能出现其他结果』