其他分享
首页 > 其他分享> > 在一个16位的机器,以下结构由于边界对齐浪费了多少空间()

在一个16位的机器,以下结构由于边界对齐浪费了多少空间()

作者:互联网

struct{
char a;
int b;
char c;
}

解析:
在这里插入图片描述

本题是16位机器,char型占1个字节,int型占2个字节。
结构体中字节对齐有两条规则:
数据成员自对齐,即数据成员起始地址为数据类型长度的整数倍,如该题int型b只能从0,2,4…等地址处开始放;
**结构体总长度是结构体中有效对齐值的整数倍,**有效对齐值,如该题没明确指出,则为最长数据成员(int b)长度的整数倍;
根据上面两条规则,画出内存示意图。根据规则1,int b从2处开始放,此时结构体总长度为(1 + 1 + 2 + 1 = 5);再根据规则2,结构体总长度应为2的整数倍,故应为6.描红的两个字节表示被浪费的。

标签:字节,16,int,整数倍,总长度,char,对齐,浪费
来源: https://blog.csdn.net/sinat_42550851/article/details/99742065