字节对齐

本小结的内容仅为个人理解,不正之处可以在评论区进行交流。

为什么要进行字节对齐

  1. 64位机器访问内存时,一次性可读取8字节数据,而内存的访问并不是任意的,cpu读取内存只能在可被8整除的地址上进行。
    除了char类型的数据,其它数据都可能存储在8字节读取边界上,为了保证cpu的一次内存访问尽可能的获取目标数据
  2. 除了char类型,其它类型的数据都应该避免存储在8字节读取边界上,因此short类型需要进行二字节对齐,int类型需要进行4字节对齐等。

如何进行字节对齐

  • 每个数据类型都会按照自己的字节宽度进行对齐,如int 4字节对齐、short 2字节对齐。
  • 所谓的n字节对齐,即数据的存储地址必须能被n整除。

实际情况下观察字节对齐现象

局部变量

通常情况下,编译器会将数据类型较宽的放置到地址的高端(x86_64机的内存生长方向为由高到低),从而避免了数据进行字节对齐。

posted on 2022-12-22 19:38  言雀  阅读(8)  评论(0)    收藏  举报