明确本质:sizeof是计算栈的大小,故静态变量不算在内
以下题来自牛客网,解析来自牛友,侵删
在一个16位的机器,以下结构由于边界对齐浪费了多少空间()
struct{
char a;
int b;
char c;
}
正确答案: D 你的答案: C (错误)
8
4
6
2
(注意!!是结构体)
结构体中字节对齐有两条规则:
数据成员自对齐,即数据成员起始地址为数据类型长度的整数倍,如该题int型b只能从0,2,4...等地址处开始放;
结构体总长度是结构体中有效对齐值的整数倍,有效对齐值,如该题没明确指出,则为最长数据成员(int b)长度的整数倍;
其内存示意图如下: