一个 NSObject 对象占用多少内存空间?

一个 NSObject`对象占用多少内存空间?
  • 受限于内存分配的机制,一个 NSObject对象都会分配 16byte 的内存空间。

但是实际上在 64位 下,只使用了 8byte;
在32位下,只使用了 4byte

一个 NSObject 实例对象成员变量所占的大小,实际上是 8 字节

#import <Objc/Runtime>
Class_getInstanceSize([NSObject Class])
本质是
size_t class_getInstanceSize(Class cls)
{
    if (!cls) return 0;
    return cls->alignedInstanceSize();
}
获取 Obj-C 指针所指向的内存的大小,实际上是16 字节
#import <malloc/malloc.h>
malloc_size((__bridge const void *)obj); 

对象在分配内存空间时,会进行内存对齐,所以在 iOS 中,分配内存空间都是 16字节 的倍数。

  • 也可以通过以下网址 :openSource.apple.com/tarballs 来查看源代码。

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:413038000,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

推荐阅读

iOS开发——最新 BAT面试题合集(持续更新中)