NSObject *obj = [[NSObject alloc] init];
- 在编译后是一个结构体。
struct NSObject_IMPL {
Class isa;
}
obj作为指向结构体的指针,在内存空间中占用的是8个字节。
- 通过oc的源码查看alloc的实现,对oc对象的大小有最小的要求,即16个字节。
size_t instanceSize(size_t extraBytes) {
size_t size = alignedInstanceSize() + extraBytes;
// CF requires all objects be at least 16 bytes.
if (size < 16) size = 16;
return size;
}
- 结论:
对象本身占用的是8个字节
系统分配的是16个字节
我们也可以通过#import <objc/runtime.h>
的class_getInstanceSize()
方法和#import <malloc/malloc.h>
的malloc_size()
方法来查看具体的内存大小
网友评论