
因为内存对齐原则 ,内存大小必然是 8的倍数 所以是24个字节
MJPerson *p = [[MJPerson alloc] init];
sizeof(struct MJPerson_IMPL);//24 这个是结构体只需要24个字节就能放下
class_getInstanceSize([MJPerson class]) ; //24 是在计算对象多大
malloc_size((__bridge const void *)(p)) ; //32 为了内存访问方便和速度是这么分配

iOS 分配OC对象内存都是16的倍数 所以
malloc_size
是32
linux 内存管理用的是GNU
- GNU is not unix
- 开源组织
- www.gnu.org
- i386 架构下的内存对齐也是 16
- 其他架构下的内存对齐是 需要宏定义计算的 一般也是16
sizeof 和 class_getInstanceSize 区别
sizeof(struct MJPerson_IMPL);
//是运算符 在编译时候就会变成确定的数值
class_getInstanceSize([MJPerson class]) ;
//是函数 运行过程中计算数值
网友评论