字节对齐
本小结的内容仅为个人理解,不正之处可以在评论区进行交流。
为什么要进行字节对齐
- 64位机器访问内存时,一次性可读取8字节数据,而内存的访问并不是任意的,cpu读取内存只能在可被8整除的地址上进行。
除了char类型的数据,其它数据都可能存储在8字节读取边界上,为了保证cpu的一次内存访问尽可能的获取目标数据 - 除了char类型,其它类型的数据都应该避免存储在8字节读取边界上,因此short类型需要进行二字节对齐,int类型需要进行4字节对齐等。
如何进行字节对齐
- 每个数据类型都会按照自己的字节宽度进行对齐,如int 4字节对齐、short 2字节对齐。
- 所谓的n字节对齐,即数据的存储地址必须能被n整除。
实际情况下观察字节对齐现象
局部变量
通常情况下,编译器会将数据类型较宽的放置到地址的高端(x86_64机的内存生长方向为由高到低),从而避免了数据进行字节对齐。
浙公网安备 33010602011771号