sizeof规则

本文探讨了C语言中sizeof操作符的工作原理,重点在于栈的大小计算和静态变量的排除。在16位系统中,通过一个具体的例子解释了结构体的字节对齐规则:数据成员自对齐和结构体总长度对齐。通过这两个规则,可以推断出结构体在内存中的布局,并揭示了可能存在的字节浪费现象。
摘要由CSDN通过智能技术生成

明确本质:sizeof是计算栈的大小,故静态变量不算在内
以下题来自牛客网,解析来自牛友,侵删

在一个16位的机器,以下结构由于边界对齐浪费了多少空间()
struct{
     char a;
     int b;
     char c;
}
正确答案: D   你的答案: C (错误)

8
4
6
2

(注意!!是结构体)
结构体中字节对齐有两条规则:
数据成员自对齐,即数据成员起始地址为数据类型长度的整数倍,如该题int型b只能从024...等地址处开始放;
结构体总长度是结构体中有效对齐值的整数倍,有效对齐值,如该题没明确指出,则为最长数据成员(int b)长度的整数倍;
其内存示意图如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值