【数媒在线课堂】剖析对象在内存中的存储

对象在内存中的存储

  • 栈、堆、BSS、数据段、代码段是什么?
  • 栈(stack):又称作堆栈,用来存储程序的局部变量(但不包括 static 声明的变量,static 修饰的数据存放于数据段中)。除此之外,在函数被调用时,栈用来传递参数和返回值。
  • 堆(heap):用于存储程序运行中被动态分配的内存段,它的大小并不固定,可动态的扩张和缩减。操作函数 (malloc/free)
  • BSS 段(bss segment):通常用来存储程序中未被初始化的全局变量和静态变量的一块内存区域。BSS 是英文 Block Started by Symbol 的简称。BSS 段输入静态内存分配
  • 数据段(data segment):通常用来存储程序中已被初始化的全局变量和静态变量和字符串的一块内存区域
  • 代码段(code segment):通常是指用来存储程序可执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读,某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量。
  • new 底层做的事情:
  • 在堆内存中申请 1 块合适大小的空间
  • 在这块内存上根据类模版创建对象。类模版中定义了什么属性就依次把这些属性声明在对象中;对象中还存在一个属性叫做 isa,是一个指针,指向对象所属的类在代码段中地址
  • 初始化对象的属性。这里初始化有几个原则:a、如果属性的数据类型是基本数据类型则赋值为 0;b、如果属性的数据类型是 C 语言的指针类型则赋值为 NULL;c、如果属性的数据类型为 OC 的指针类型则赋值为 nil。
  • 返回堆空间上对象的地址
  • 注意
  • 对象只有属性,没有方法。包括类本身的属性和一个指向代码段中的类 isa 指针
  • 如何访问对象的属性?指针名 -> 属性名;本质:根据指针名找到指针指向的对象,再根据属性名查找来访问对象的属性值
  • 如何调用方法?[指针名 方法]; 本质:根据指针名找到指针指向的对象,再发现对象需要调用方法,再通过对象的 isa 指针找到代码段中的类,再调用类里面方法
  • 为什么不把方法存储在对象中?
  • 因为以类为模版创建的对象只有属性可能不相同,而方法相同,如果堆区的对象里面也保存方法的话就会很重复,浪费了堆空间,因此将方法存储与代码段
  • 所以一个类创建的 n 个对象的 isa 指针的地址值都相同,都指向代码段中的类地址

今日霍州(www.jrhz.info)©️

特别声明:[【数媒在线课堂】剖析对象在内存中的存储] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

靠家人救济开机,在焦虑症中剪辑:青年导演卞灼的《翠湖》创作之路(靠救济过日子)

导演卞灼将这段真实经历搬上银幕,不仅是为了纪念亲人,更是为了让更多人看到那些藏在日常生活中的情感暗流。 如果你也在寻找一种方式,去理解和表达家庭中的情感,那么《翠湖》或许能给你一些启发。欢迎在评论区分享你的故…

靠家人救济开机,在焦虑症中剪辑:青年导演卞灼的《<strong>翠湖</strong>》创作之路(靠救济过日子)

『明星』️信赖的眼艺大师 何怀万以精湛医技诠释自然之美(『明星』️的眼睛的照片)

在整形美容行业,眼部整形因其精细度高、对审美要求严苛,被誉为“医美界的精细艺术”。眼部精雕专科院长何怀万,凭借十余年专研积淀与精湛医技,成为红人『明星』️御用的眼部整形大咖,用无数成功案例诠释着“灵动自然”的眼部美…

『明星』️信赖的眼艺大师 何怀万以精湛医技诠释自然之美(『明星』️的眼睛的照片)

2026年儿童舞台表演必备:礼帽、爵士帽、魔术帽选哪款最合适?(少儿舞台表演节目)

挑选适合儿童表演的舞台道具帽,要考虑安全性、舒适性和功能性。礼帽、爵士帽、魔术帽各有特色,2026年如何选才最适合?本篇为你详细分析儿童礼帽、爵士帽、魔术帽的功能和选购要点。

2026年儿童舞台表演必备:礼帽、爵士帽、魔术帽选哪款最合适?(少儿舞台表演节目)

医美护肤赛道,为什么越来越需要“诺奖级科研背书”?(医美护肤牌子)

尤其是在监管趋严、舆情敏感的大环境下,品牌如果没有足够硬的科研背书,很容易陷入两难:也正因为这样,这两年行业头部品牌几乎在同步做一件事——把“成分竞争”,升级为“科研体系竞争”。 你卖的,就不再只是护肤产…

医美护肤赛道,为什么越来越需要“诺奖级科研背书”?(医美护肤牌子)

光模块巨头Coherent掉队担忧解除了吗 强劲财报提振信心(光模块巨头有哪些)

在最新公布的财报季中,Coherent以超出预期的业绩表现和强劲的订单指引,有力回应了市场对其可能在AI光通信竞赛中“掉队”的担忧。公司不仅展示了全面加速的增长态势,还通过获得关键AI客户的订单,重新确立了其作为技术领导者的地位

光模块巨头Coherent掉队担忧解除了吗 强劲财报提振信心(光模块巨头有哪些)