美文网首页iOS面试
NSObject对象在内存中占用多大空间

NSObject对象在内存中占用多大空间

作者: cf87744ea7b3 | 来源:发表于2019-11-09 22:09 被阅读0次
    NSObject *obj = [[NSObject alloc] init];
    
    • 在编译后是一个结构体。
    struct NSObject_IMPL {
        Class isa;
    }
    

    obj作为指向结构体的指针,在内存空间中占用的是8个字节。

    • 通过oc的源码查看alloc的实现,对oc对象的大小有最小的要求,即16个字节。
    size_t instanceSize(size_t extraBytes) {
        size_t size = alignedInstanceSize() + extraBytes;
        // CF requires all objects be at least 16 bytes.
        if (size < 16) size = 16;
        return size;
    }
    
    • 结论:

    对象本身占用的是8个字节
    系统分配的是16个字节

    我们也可以通过#import <objc/runtime.h>class_getInstanceSize()方法和#import <malloc/malloc.h>malloc_size()方法来查看具体的内存大小

    相关文章

      网友评论

        本文标题:NSObject对象在内存中占用多大空间

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