美文网首页
OC对象的本质 1--一个OC占用多少内存

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

作者: 大鹅ne | 来源:发表于2020-04-03 23:34 被阅读0次

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/koqrphtx.html