CGPoint 在OC中是一个结构体,结构体一般采用内存对齐的方式分配,比如:结构体内有 char
、float
、int
、 long
、double
几种数据类型。
-
char
1个字节 -
float
2个字节 -
int
4个字节 -
long
4个字节 -
double
8个字节
在分配内存的时候按照变量顺序,变量存放的起始地址相对于结构体的起始地址的偏移量必须为该变量的类型所占用的字节的倍数,不够时填充。
即结构体的size必然是最大变量类型字节倍数。
方式有两种:
- 自然对界:默认的对其方式,按结构体的成员中size最大的成员对齐。
- 指定对界:使使用伪指令
#pragma pack(n)
指定如果结构体内的成员size不足对齐按照n的长度对齐,但是注意如果定义的n大于结构体成员最大的size时则不起作用,结构体还是按照size最大成员对齐。