首页 > 代码库 > OC基础复习(二)之对象的存储细节
OC基础复习(二)之对象的存储细节
1.内存分为5大区:栈区,堆区,Bss段,数据区,代码区(排序方式:由高地址-->低地址)
其中注意:栈区对象的地址分配是先分配高地址,再分配低地址,(通俗讲就是在栈区中存的变量,先从地址高的开始往下存)
堆区是从低地址开始分配,再分配到高地址 如下图;
栈区:存储局部变量
堆区:存储程序运行的过程中动态分配的内存空间(通俗的理解就是实例对象,例如:Person *p = [Person new],这块内存空间就是指针变量p指向的这个空间)
Bss段:存储未初始化的全局变量和静态变量
数据区:存储已经初始化的全局变量和静态变量和常量
代码区:存储函数体的二进制代码
类创建对象,每个对象在内存中都占有存储空间,每个对象都有
一份属于自己的单独的成员变量
每个对象都包含一个isa指针,这个指针指向当前对象所属的类
给成员变量赋值:图解:
byd->_speed = 120;
程序会先找到byd对象(指针变量),然后通过指针指向的地址找到成员变量_speed,继而给成员变量赋值
通过对象去调用方法:
这个时候会用到isa指针,isa指针会指向当前对象所属的类,即会指向代码区(代码区存放的是以二进制形式存放的当前类的代码)
byd对象实际上就是调用的代码区的run方法
- UTF-8 国际通用编码,一个汉字占3个字节 (Xcode默认格式)
- GB2312 国内标准 一个汉字占两个字节 GBK
未完待续.........................
OC基础复习(二)之对象的存储细节
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。