OC 对象本质是结构体类型
@interface NSObject :
{
Class isa;
}
即
struct NSObject_IMPL {
Class isa; // 8个字节
};
一个NSObject对象占用多少内存?
系统会分配16个字节给NSObject对象(可以通过Malloc_size函数获得)
但NSObject对象内部只使用了8个内存空间(64bit环境下,可以通过class_getInstanceSize函数获得)
struct Student_IMPL {
Class isa;
int _no;
int _age;
};
@interface Student : NSObject
{
@public
int_no;
int_age;
NSString* _name;
}
@end
@implementation Student
@end
NSLog(@"%zd", class_getInstanceSize([Student class]));
NSLog(@"%zd", malloc_size((__bridge const void *)stu));
输出分别为24和32;
isa指针占8个字节,一个int类型4个字节,字符串指针占8个字节,所以占用空间24
又因为自己16倍数对其所以会分配32个字节
网友评论