结构体内存对齐
接下来我们首先定义两个结构体,分别计算他们的内存大小,来引入今天的主体,内存对齐原理
struct MyStruct1{
char a; //1 [0]
double...,这就是ios 中内存字节对齐现象
内存对齐规则
每个特定平台上的编译器都有自己的默认"对齐系数",程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16 来改变这一系数,其中...n
就是对齐系数,在 ios 中,xcode 默认是#pragma pack(8),即 8 字节对齐
内存对齐原则主要分为以下三点
原则1: 数据成员的对齐规则可以理解为 min(m,n)的公式,其中...18, 根据内存对齐原则,内存大小必须是最大成员的整数倍, 其中最大成员为 8, 向上取整,所以 sizeof
最后的结果为 24
内存优化,属性重排
MyStruct1通过内存字节对齐原则,增加了...这里总结下苹果的内存对齐思想
大部分内存都是通过固定的内存块进行读取
尽管我们在内存中采用了内存对齐的方式,但是并不是所有内存都可以进行浪费的,苹果会自动对属性进行重排,用此来优化内存
字节对齐到底采用多少字节对齐