基本数据类型变量 结构体 union 类的内存字节对齐

本文详细解释了内存字节对齐的含义、原因和重要性,以及介绍了基本数据类型、结构体和类对象的字节对齐规则。通过实例解析了结构体成员变量的内存布局,并探讨了union的字节对齐和内存布局原则。理解这些规则对于提高程序运行效率至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系原创,转载时请帖上地址:http://blog.youkuaiyun.com/qq51931373/article/details/45843975


什么叫内存字节对齐:就是在内存地址中按照一个规则(这个规则具体是什么在下面说)把一个变量放在它应该在的内存地址,而不是把变量从前到后一个紧挨着一个存放(那是 在理想状态下存在的,而理想和现实是有差距的,呵呵)。


为什么要字节对齐    :CPU从数据总线中读取内存中的数据,而CPU一次性从内存中读取多少位的数据是由数据总线的位数来决定的,拿i386处理器来说,它的数据总线是32位,也就决定了i386的处理器一次性是从内存中读取32位的数据(也就是4个字节)。如果在内存中的变量在存放的时候没有严格按照规则(下面会讲) 被存放到一个它应该在的内存地址,就会导致读取一个变量的值到CPU时,会读取多次,这就导致了效率上的下降,由于CPU的速度比内存的速度快很多倍,所以CPU从内存中读一次  和 从内存中读两次 从CPU的角度来说这个效率的下降是不可以接受的.而为什么没有对齐的话则会读两次甚至三次,请阅读这篇客:http://blog.youkuaiyun.com/qq51931373/article/details/45846001


 以下介绍基本数据类型变量  结构体  类对象的字节对齐规则:

在介绍规则之前先明确以下概念:

1. 基本数据类型变量的自身对齐值 = sizeof(type) ,如int 类型变量的内存对齐值就是4。如果int a[10] 则变量a的自身对齐值仍然是sizeof(int),而不是sizeof

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值