美文网首页
关于实例化时,开辟内存的字节对齐

关于实例化时,开辟内存的字节对齐

作者: LoZR | 来源:发表于2019-02-20 15:37 被阅读0次

    我们都知道每当创建一个对象的时候都会开辟一片内存,但内存分配的时候实际是做了什么处理呢?今天粗略写一下关于字节对齐的概念。
    首先创建一个类,内容为:


    image.png

    先注释一下每个属性实际是占多少内存,还有isa为什么会存在?我们都知道 万物皆对象 ,每个对象都会有一个 isa 指针,然而这个东东也是需要占内存的,如下图打印:

    image.png
    image.png

    我们对比一下LGPerson 的属性排序是 isa,age,name,height和上图的打印的

    // age
    p 0x12
    (int) $3 = 18   
    // height
    p 0xb9
    (int) $4 = 185 
    // name
     p (NSString *)0x010daa3080
    (__NSCFConstantString *) $5 = 0x000000010daa3080 @"cooci"
    
    image.png

    至于为什么不是在 蓝色框 存 4bit的 name、换行再放 4bit 的name;
    个人理解是系统为了效率,不把补数据截断,也防止数据丢失并提高了编译速度的原因吧。
    以上内容纯粹个人见解,仅用于分享交流;如有描述不当之处,欢迎指出。

    相关文章

      网友评论

          本文标题:关于实例化时,开辟内存的字节对齐

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