OC对象的本质 1--一个OC占用多少内存

2020-04-03  本文已影响0人  大鹅ne

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个字节

上一篇下一篇

猜你喜欢

热点阅读