一個 NSObject
對象佔用多少內存空間?
受限於內存分配的機制,一個 NSObject
對象都會分配 16Bit
的內存空間。
但是實際上在 64位 下,只使用了 8bit
;
在32位下,只使用了 4bit
一個 NSObject 實例對象成員變量所佔的大小,實際上是 8KB
#import <Objc/Runtime>
Class_getInstanceSize([NSObject Class])
本質是
size_t class_getInstanceSize(Class cls)
{
if (!cls) return 0;
return cls->alignedInstanceSize();
}
獲取 Obj-C 指針所指向的內存的大小,實際上是16KB
#import <malloc/malloc.h>
malloc_size((__bridge const void *)obj);
對象在分配內存空間時,會進行內存對齊,所以在 iOS 中,分配內存空間都是 16字節 的倍數。
可以通過以下網址 :openSource.apple.com/tarballs 來查看源代碼。
面試題持續整理更新中,需要拿到第一手大廠面試題及答案文檔可以添加 iOS進階學習交流羣:551346706 !結實人脈、討論技術你想要的這裏都有!