C语言--结构体内存对齐

两个问题:1.为什么需要内存对齐?2.对齐的原则是什么?

针对Question1

ANS:内存对齐是为了提高效率,以32位计算机为例,CPU读取一次数据,是读32位,也就是4字节对齐,因此如果一个int型数据是按照4字节对齐来存储的,则取数据的时候就会一次取出,但如果存储的数据中有int、char、short,却没有按照4字节对齐则取出的int型可能就会跨越32位,这个时候CPU还会按照32位读,但一次就会读不完全一个int型,这个时候就需要读取两次,也就浪费了时间

针对Question2

ANS:对齐原则:

a.结构体内成员按自身长度自对齐,自对齐,指的就是该成员的其实地址必须是它自身长度的整数倍

b.结构体的总大小为结构体的有效对齐值的整数倍,有效对齐值,1.以结构体中最长的成员的长度为其有效值

2.当用#pragmatic(n)指定时,以n和结构体中最长的成员的长度中较小者为有效对齐值

3.当用_attribute_((n))指定长度时,强制按照此值为结构体的有效对齐值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值