文章目录
OC对象 - NSObject对象占用多少内存
1 前言
我们知道NSOjcect底层实现中,
struct NSObject_IMPL结构体里面仅有Class isa一个成员,那么,NSObject对象是否就是占用8个字节呢?
先说结果:一个NSObject对象占用的是16字节,但实际利用的只有 8 个字节
我们来验证一下
- 本节我们主要会用到一下这两个函数
class_getInstanceSize、malloc_size
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSObject *obj = [[NSObject alloc] init];
// 获得NSObject类的实例对象所占用的大小
NSLog(@"%zd", class_getInstanceSize([NSObject class]));
// 获得obj指针指向内存的大小
NSLog(@"%zd", malloc_size((__bridge const void *)(obj)));
}
return 0;
}
我们分别用这两个函数,打印内存大小

class_getInstanceSize打印的是 8 字节,malloc_size

本文详细探讨了Objective-C中NSObject对象的实际内存占用,包括单个对象、复杂继承结构下的内存分配原理,以及如何通过函数如class_getInstanceSize和malloc_size进行验证。作者还介绍了使用LLDB工具观察内存数据的方法。
最低0.47元/天 解锁文章
564

被折叠的 条评论
为什么被折叠?



