iOS-OC对象原理_字节对齐

2020-09-10  本文已影响0人  泽泽伐木类
基本数据类型在不同操作系统下的大小
C OC 32位 64位
bool BOOL(64位) 1 1
signed char (__signed char)int8_t,BOOL(32bit) 1 1
unsigned char Boolean 1 1
short int16_t 2 2
unsigned short unichar 2 2
int int32_t NSInteger(32bit) boolean_t(32bit) 4 4
unsigned int boolean_t(64bit) NSUInteger(32bit) 4 4
long NSInteger(64bit) 4 8
unsigned long NSUInteger(64bit) 4 8
long long int64_t 8 8
float CGFloat(32bit) 4 4
double CGFloat(64bit) 8 8
内存对齐原则
For Example
struct Test {
    int a;    //4  0 1 2 3
    float b;  //4  4 5 6 7
    char c;   //1  8
    short d;  //2  9 10 11
    double f; //8  12 13 14 15 |16 17 18 19 20 21 22 23
}Test; //24
2020-09-10 10:21:37.606643+0800 ZZObjc[92851:45306301] sizeof(Test) == 24
struct TestStruct {
    double a;       // 8  0 1 2 3 4 5 6 7
    float b;        // 4  8 9 10 11
    struct Test c;  //最大成员是f(8字节) 8 12 13 14 15 | 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
                                                    // 31 32 33 34 35 36 37 38 39
    char d;        // 1 40
    char e;        // 1 41
    double f;      // 8 42 43 44 45 46 47 |48 49 50 51 52 53 54 55
}TestStruct;
2020-09-10 10:21:37.606830+0800 ZZObjc[92851:45306301] sizeof(TestStruct) == 56

总结:当结构体中包含【结构体成员】或【数组】的,取元素中最大元素大小的整数倍开始存储。

总结

以上内容其实应该是C语言基础的内容,这里算是拾忆并记录下。

上一篇 下一篇

猜你喜欢

热点阅读