美文网首页
一、OC对象的本质

一、OC对象的本质

作者: yqc5521 | 来源:发表于2019-04-13 09:49 被阅读0次
struct NSObject_IMPL {
    Class isa;   // 指针占8个字节
};
 NSObject *obj = [[NSObject alloc] init];
 NSLog(@"instanceSize---%ld",class_getInstanceSize([NSObject class]));
 // NSObject类的实例对象成员变量所占用的内存大小
 NSLog(@"mallocSize---%ld",malloc_size((__bridge const void *)(obj)));  
// obj指针所指向的内存大小

1、class_getInstanceSize调用栈

class_getInstanceSize调用栈01 class_getInstanceSize调用栈02

2、malloc_size调用栈

malloc_size调用栈1 malloc_size调用栈2 malloc_size调用栈3
malloc_size调用栈4

3、Student的内存大小

@interface Student : NSObject
{
    @public
    int _no;   //4
    int _age;  //4
    double _weight; //8
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
 
        Student *student = [[Student alloc] init];
        student->_age = 4;
        student->_weight = 5;
        student->_no = 8;
        NSLog(@"%ld",class_getInstanceSize([Student class]));
        NSLog(@"%ld",malloc_size((__bridge const void *)(student)));
        //由于有内存对齐的概念,分配内存大小为16的倍数,结构体的内存也有对齐的概念,是8的倍数
    }
    return 0;
} 
内存对齐

相关文章

  • OC 与 Swift

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(中)—— OC对象的种类

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(下)—— 详解isa&supercl

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(上)

    iOS | OC对象本质 | Objective-C 什么是OC语言,OC对象、类的本质是什么,OC对象的内存布局...

  • Runtime:OC对象、类、元类的本质

    零、Runtime是什么一、OC对象的本质二、OC类的本质三、OC元类的本质四、Runtime关于对象、类、元类的...

  • iOS底层isa结构分析

    在介绍正文之前,首先需要理解一个概念:OC对象的本质是什么? OC对象本质 在探索oc对象本质前,先了解一个编译器...

  • block 笔记

    block本质是OC对象(封装了函数调用以及调用环境的OC对象) 本质

  • OC对象原理探究(下)

    介绍正文前,我们思考一个问题,什么是对象?或者说OC对象的本质是什么? 对象本质以及拓展 在探索oc对象本质前,先...

  • 总结

    主题一《OC对象的本质》=========== 1、OC的本质 Objective-C ----> C\C++ -...

  • iOS底层原理总结-- KVO/KVC的本质

    iOS底层原理总结--OC对象的本质(一) - 掘金 iOS底层原理总结--OC对象的本质(二) - 掘金 iOS...

网友评论

      本文标题:一、OC对象的本质

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