美文网首页
类结构探索之-内存偏移

类结构探索之-内存偏移

作者: 誓言_cf35 | 来源:发表于2020-09-13 02:01 被阅读0次

变量的指针与内存关系

局部变量是由系统分配在栈区的,而栈区的内存是连续的。

定义两个局部变量,看一看他们的地址有什么关系。如图:


两个局部变量的地址

从图中可以看到两个变量的地址相差了4。而int在内存中所占的大小正好也是4,这就说明了他们在内存中是连续存在的。两个变量与数字10在内存中是怎么体现的呢?请看下图:


对象内存与指针的关系

看过局部变量的内存关系,接下来看看对象指针跟内存直接的关系。还是先创建两个对象,然后打印对象的指针。如图所示:



可以看到打印出来的指针地址都不一样,那么对象的指针跟内存之间又存在怎样的关系呢?还是从用一幅图来体现一下:



这里每个对象都对应着自己的内存空间,所以分别改变属性值并不会导致其他对象的属性值改变。

数组的指针和内存关系

最后,看一下数组在内存里面的存储方式:

数组在内存中的表现
从图中打印的数据我们可以看出,数组的元素在内存中应该连续存在的。而且通过指针变量d存储数组的首地址,然后竟然可以通过d+1获取到数组下标为1的元素地址,真是有点神奇。

其实这在C语言中叫指针偏移,然而我也不是很了解。

相关文章

  • 类结构探索之-内存偏移

    变量的指针与内存关系 局部变量是由系统分配在栈区的,而栈区的内存是连续的。 定义两个局部变量,看一看他们的地址有什...

  • 类结构探索之 内存结构

    类和对象的关系 要说起类和对象的关系,我可能只知道对象是类创建(alloc init,new)出来的,而且一个类可...

  • Cache_t结构分析

    Cache_t初识 我们在前面对类的结构探索中知道了类结构体成员如下 我们通过地址偏移探索知道在bits中包含了类...

  • 内存偏移

    在类的结构分析[https://www.jianshu.com/p/3e97c018df4c]中,用到了内存偏移,...

  • 类的结构分析

    isa继续探索 在对象探索-初探isa文章中,简单探索了isa的构成,这篇文章主要将isa之间的关系及类的内存结构...

  • iOS 类原理探索:类的结构分析

    OC 类原理探索 系列文章 OC 类原理探索:类的结构分析 OC 类原理探索:类结构分析补充[https://ju...

  • Objective-C中Class的本质

    类(class)和元类(meta-class)底层都是 objc_class 结构体的指针,内存中就是结构体。 之...

  • NSObject内存探索

    NSObject内存探索 对象的定义 注: 拥有isa指针的结构体都是对象,因此类也是对象(类对象),实例也是对象...

  • C语言中内存对其规则

    C语言中结构体内存对齐规则 对齐规则: 内存偏移为该数据类型的最小整数倍 总体占用内存为结构体中最大数据类型的整数...

  • iOS底层之类的结构分析

    从iOS底层之isa结构分析及关联类我们探究了类的实例对象的内存结构,对象指针的首地址存储了isa,也就是存储了类...

网友评论

      本文标题:类结构探索之-内存偏移

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