在iOS系统中,系统分配了16byte(16字节)内存空间,可通过malloc_size()函数获取字节数,class_getInstanceSize()函数获取实例对象占用空间大小。但实际上,一个NSObject对象内部在64bit(64位架构)下只用了8byte(8字节)空间,在32bit(32位架构)下只用了4byte(4字节)空间,原因在于系统分配内存空间规律是16的倍数
// 16个字节
NSObject *obj = [[NSObject alloc] init];
// 获得NSObject实例对象的成员变量所占用的大小 >> 8
NSLog(@"%zd", class_getInstanceSize([NSObject class]));
// 获得obj指针所指向内存的大小 >> 16
NSLog(@"%zd", malloc_size((__bridge const void *)obj));