1. 一个NSObject对象占用多少内存?
- 系统分配了16个字节给NSObject对象(通过malloc_size函数获得)
- 但NSObject对象内部只使用了8个字节的空间(64bit环境下,可以通过class_getInstanceSize函数获得)
代码解析
#import <objc/runtime.h>
#import <malloc/malloc.h>
// NSObject Implementation
struct NSObject_IMPL {
Class isa; // 8个字节
};
// 指针
// typedef struct objc_class *Class;
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSObject *obj = [[NSObject alloc] init];
// 16个字节
// 获得NSObject实例对象的成员变量所占用的大小 >> 8
NSLog(@"%zd",class_getInstanceSize([NSObject class]));
// 获得obj指针所指向内存的大小 >> 16
NSLog(@"%zd",malloc_size((__bridge const void *)obj));
}
return 0;
}
运行结果