using namespace std;  struct example{      long a;      char b[15];      char c[15];      char d[20];  }test_struct; 我们来补充例子,更好的理解字节对齐。字节自然对齐就两个规则,一是当前变量的起始地址是该变量类型的整数倍,二是整个结构体的大小需要是最大类型变量的倍数。我们来分析一下,a占四个字节,那么b的起始地址为0004,能整除char(占一个字节)吗?可以。同理,c的起始地址为0019,能整除char吗?可以,d的起始地址为0034,可以整除char吗?可以,加起来54,而54能整除其中占类型最大的变量long a(占4个字节)吗?不能,所以需要补齐两个字节,最终大小为56.
3

相关推荐

牛客网
牛客企业服务