内存对齐的规则

本文介绍了内存对齐的基本概念,为何它有利于计算机数据操作,以及内存对齐的三大规则,包括偏移量、对齐数和结构体总大小的要求。特别提到了VS和Linux编译器的默认对齐差异。
摘要由CSDN通过智能技术生成

一、为什么要内存对齐

        简单来说,就是方便计算机去读写数据。

        对齐的地址一般都是 n(n = 2、4、8)的倍数。

        (1). 1 个字节的变量,例如 char 类型的变量,放在任意地址的位置上;

        (2). 2 个字节的变量,例如 short 类型的变量,放在 2 的整数倍的地址上;

        (3). 4 个字节的变量,例如 float、int 类型的变量,放在 4 的整数倍地址上;

        (4). 8 个字节的变量,例如 long long、double 类型的变量,放在 8 的整数倍地址上;

 

二、内存对齐的三大规则:

第一规则: 内存中的偏移量是指成员变量的首地址相较于“0”地址处的距离,在结构体起始位置处存放的是结构体的第一个成员变量,偏移量为0,不论第一个结构体成员的大小,都是存放在0偏移量处。

第二规则: 对齐数 = 编译器默认的一个对齐数与该成员大小的较小值。 在VS编译器下默认对齐数为8(单位byte/字节),在Linux中没有默认对齐数,对齐数就是成员的本身大小。

第三规则:   结构体的总大小,必须为最大对齐数(PPB)的整数倍大小, 而最大对齐数就为结构体成员中最大成员的大小。

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成为不掉头发的工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值