美文网首页
关于内存对齐

关于内存对齐

作者: 陈_振 | 来源:发表于2019-05-04 16:40 被阅读0次

将数据放在内存上时,对于存放数据的地址有对齐的限制。

对齐是指将数据放在内存上时,必须放置在特定数值的倍数的地址上。例如,“必须放置在4的倍数的地址上”。

最近设计的CPU中有着所有的数据都必须放置在该数据大小的倍数的地址上这样的限制。也就是说2字节的数据必须存放在2的倍数的地址上,4字节的数据必须存放在4的倍数的地址上。违反上述限制就会发生总线错误,导致程序异常终止。

另外,某些OS中调用外部函数时的栈帧必须以16字节为边界排列,例如Windows和Max OS X。

将结构体存放在内存上时,其成员的值由前向后依次排列。另外,结构体中各成员有着和各成员的数据类型的大小一样的对齐限制。即2字节的数据必须存放在2的倍数的地址上,4字节的数据必须存放在4的倍数的地址上。这样一来,像下面这样大小不一的成员在排列时就可能形成间隙,这样的间隙称为填充(padding)。

struct s {
    char a;
    char b;
    int c;
}

0到1字节存放a,1到2字节存放b,4到8字节存放c,2到4字节就形成了间隙。

相关文章

  • iOS 开发 内存对齐(练习)

    目录 内存对齐规则 对齐系数 面试题演练 一、内存对齐规则 (关于面试题中结构体内存对齐计算总结) 1.1、数据成...

  • 关于内存对齐

    一次开发遇到的内存对齐问题 1.问题描述 在开发的过程中有一个协议头,结构如下: 协议头的长度被定义为了 20 b...

  • 关于内存对齐

    将数据放在内存上时,对于存放数据的地址有对齐的限制。 对齐是指将数据放在内存上时,必须放置在特定数值的倍数的地址上...

  • 2.iOS底层学习之内存对齐

    学习了内存对齐之后的疑问?? 1.为啥要内存对齐?2.内存对齐的规则?3.内存对齐实例分析。 内存对齐的目的 上网...

  • 内存对齐

    本次主要讨论三个问题: 什么是内存对齐 内存对齐的好处 如何对齐 内存对齐 内存对齐是一种提高内存访问速度的策略。...

  • 结构体内存对齐

    对象内存对齐 探讨的问题 1.什么是内存对齐?2.为什么要做内存对齐?3.结构体内存对齐规则4.源码内存对齐算法 ...

  • OC对象原理探索(中)-内存对齐

    什么是内存对齐 关于什么是内存对齐,我们通过下面一个例子来看一下 需引入#import

  • 关于内存对齐,看我

    引 先来看一下这个例子: 理论上,64位系统下,int占 4个byte,char占 1个byte,那么将它们放到一...

  • 02 关于内存对齐

    我们先来看一个例子 在例子中有一个 结构体,内部有一个 和一个 的数据,按理来说 占 字节, 占 字节, 结构体的...

  • OC底层 -从类的对象内存排列看内存对齐

    写在开头 缘于上篇文章OC底层-对象的alloc流程探究,在联想的时候想到了内存对齐,又查看了很多关于OC内存对齐...

网友评论

      本文标题:关于内存对齐

      本文链接:https://www.haomeiwen.com/subject/bytfoqtx.html