内存对齐

1、什么是内存对齐

  • 现代计算机中内存空间都是按照 byte 划分的
  • 理论上讲似乎对任何类型的变量的访问可以从任何地址开始,实际的计算机系统对基本类型数据在内存中存放的位置有限制
  • 会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐

2、为什么要进行内存对齐
处理器在取数据时一次性就能将数据读出来了,而且不需要做额外的操作,提高了效率。

说一说你理解的内存对齐以及原因

  • 分配内存的顺序是按照声明的顺序
  • 每个变量相对于起始位置的偏移量必须是该变量类型大小的整数倍,不是整数倍空出内存,直到偏移量是整数倍为止。
  • 最后整个结构体的大小必须是里面变量类型最大值的整数倍。

添加了#pragma pack(n)后规则

  • 偏移量要是n和当前变量大小中较小值的整数倍
  • 整体大小要是n和最大变量大小中较小值的整数倍
  • n值必须为1,2,4,8…,为其他值时就按照默认的分配规则
posted @ 2023-02-22 10:10  小秦同学在上学  阅读(28)  评论(0编辑  收藏  举报