美文网首页
iOS 结构体内存对齐

iOS 结构体内存对齐

作者: 天清水蓝 | 来源:发表于2020-09-08 23:53 被阅读0次
    struct LGStruct1 {
        double a;   // 8 (0-7)
        char b;     // 1 [8 1] (8)
        int c;      // 4 [9 4] 9 10 11 (12 13 14 15)
        short d;    // 2 [16 2] (16 17)
    }struct1;
    
    // 内部需要的大小为: 17
    // 最大属性 : 8
    // 结构体整数倍: 24
    // 结构体嵌套结构体 : 作业
    //
    
    // 15 -> 16
    
    struct LGStruct2 {
        double a;   //8 (0-7)
        int b;      //4 (8 9 10 11)
        char c;     //1 (12)
        short d;    //2 13 (14 15) - 16
    }struct2;
    // 15 -> 16
    
    //原则1:结构体内变量存储的开始位置应该是变量所占字节的整数倍(第一个变量从0开始),如不是,跳至整数倍开始存
    //原则2:结构体嵌套结构体的话,第二个结构体应该从8的倍数开始存储
    //原则3:结构体大小最终应该为其内部最大变量(内部基础变量)的整数倍
    struct LGStruct3 {
        double a;          //8    [0-7]
        int b;             //4    [8 4] 8 9 10 11
        struct LGStruct2 m;//16   [16 16] 16 17 ... 31
        char c;            //1    [32 1]  32
        short d;           //2    [34 2] 34 35
        //因为结构体为8的整数倍,所以最终结果为40
    }struct3;
    

    相关文章

      网友评论

          本文标题:iOS 结构体内存对齐

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