美文网首页
内存对齐三个原则

内存对齐三个原则

作者: 七维树 | 来源:发表于2018-06-26 14:36 被阅读44次

1.结构体的总大小,必须要是其内部最大成员的整数倍,不足的要补齐。

typedef struct one {
    char a;=====> 1 -> 4
    int b;======> 4
    double c;===> 8. //max
    char d;=====> 1 -> 8  //补齐到8的整数倍
} ONE:
结构体one总大小: 4+4+8 = 16

2.结构体或联合的数据成员,第一个数据成员是要放在offset == 0的地方,如果遇上子成员,要根据子成员的类型存放在对应的整数倍的地址上。

typedef struct two {
    char array[2];==> 2 -> 4
    int b;==========> 4
    double c;=======> 8  //max
    float d;========> 4 -> 8  //原则1
} TWO;
结构体two总大小: 4+4+8+8 = 24

3.如果结构体作为成员,则要找到这个结构体中的最大元素,然后从这个最大成员的整数倍地址开始存储。

struct three {
    char a; ====> 1 -> 4
    int b;======> 4
    double c;===> 8
    short d;====> 2 -> 8  //原则3 ,下面是个结构体,其中最大成员为8,则需要从8的整数倍地址存放,所以变量d补齐到8
    TWO e;     ==> 24 (max 8)
};
结构体two总大小: 4+4+8+8+24 = 48

相关文章

  • 内存对齐

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

  • 内存对齐三个原则

    1.结构体的总大小,必须要是其内部最大成员的整数倍,不足的要补齐。 2.结构体或联合的数据成员,第一个数据成员是要...

  • 内存对齐原则

    导引 首先看一个例子: 从图中看出,打印结果不同,这是为什么呢? 基础知识(arm64) char 1字节; s...

  • iOS底层探索-calloc

    一、calloc底层探索 1.1、内存对齐原则 a:数据成员对齐规则:结构(struct)(或联合(union))...

  • iOS 内存对齐

    一、结构体内存对齐 1.1 结构体内存对齐三大原则 数据成员对⻬规则结构体(struct)或联合体(union)的...

  • 苹果内存对齐原则

    alloc主要创建流程 这里最重要的方法就是这三个: cls->instanceSize calloc obj->...

  • iOS内存对齐原则

    内存对齐原则: 1、数据成员对⻬规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在o...

  • 内存对齐的原则

    1、数据成员对齐规则:结构(struct)或union的数据成员,第一个数据的成员,放在offset为0 的地方,...

  • iOS结构体内存对齐原则初探

    为什么OC对象在开辟内存的时候会有内存对齐原则,在对象申请内存的时候是16字节对齐的,在真正开辟所需要的内存时时8...

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

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

网友评论

      本文标题:内存对齐三个原则

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