一,堆与栈

1,栈区,stack: 后进先出,由编译器自动分配并释放,一般存放函数的参数值、局部变量

2,堆区,heap:先进先出,由程序员分配和释放

3,全局区,静态区:程序结束后由系统释放,

4,寄存区:保存栈顶指针和指令指针

5,文字常量区

6,程序代码区,存放函数的二进制代码

链表:头指针head,

栈区:main中有i和j变量    i 地址比 j 地址 大

栈区大小为1M

堆:(系统内存和虚拟内存)

  1,所有应用程序共享

  2,所有堆中的内存分配,都是操作系统负责的

  3,操作系统使用链表来维护所有已经分配的内存

  4,堆中的内存释放,程序通知系统释放内存。引用计数为0,会被立即释放

  5,堆中的所有空间,都是“匿名”访问的,所有匿名访问都是通过指针来访问

在OC中没有垃圾回收机制

NULL表示地址为0

nil 是地址指向NULL的空对象

nil可以调用任何方法不会报错

copy:建立一个副本,互不干扰

可变不可变 是 针对 Foundation 框架的数据类型

对于自定义类 copy就是可变

arrayM  M就是可变的意思

可变copy为可变或不可变 地址都会变

不可变copy为不可变(浅复制) 地址不变

NSMutableArray *arrayM = [NSMutableArray arrayWithObjects:@(), @(), nil];
NSLog(@"%@ %p %@", arrayM, arrayM, arrayM.class); //1,可变 =》 可变
NSMutableArray *aM = [arrayM mutableCopy];
NSLog(@"%@ %p %@", aM, aM, aM.class);
//2,可变 =》 不可变
NSArray *a = [arrayM copy];
NSLog(@"%@ %p %@", a, a, ,a.class);

最新文章

  1. VS 设置编译后的程序可以以管理员身份运行
  2. POJ 1797 Heavy Transportation (最短路)
  3. CODEVS 1638 修复公路
  4. C# ITextShap 生成PDF 下载
  5. Flex下拉框
  6. Servlet init()
  7. configparser模块(ini配置文件生成模块)
  8. Linux(Ubuntu-CentOS)
  9. M1-day08-数据库加锁
  10. 安卓MVP框架
  11. linux下安装redis及其中遇到的问题的解决方法
  12. Inception系列
  13. linux内核源码之基础准备篇
  14. Unity3D动画面板编辑器状态属性对照表
  15. php温习-变量,常量
  16. 【转】使用Jmeter针对ActiveMQ JMS Point To Point压力测试
  17. NOIP2018 解题笔记
  18. mac 安装php redis扩展
  19. adoop集群动态添加和删除节点
  20. [Spring Data MongoDB]学习笔记--MongoTemplate插入修改操作

热门文章

  1. maven2-snapshot快照库和release发布库的应用
  2. Java 学习之路 之 泛型方法
  3. bzoj4415&&bzoj4416&&bzoj4417:SHOI2013Day1题解
  4. 自动完成--autoComplete插件(2)
  5. ES5/ES6的区别研究(ECMAScript)
  6. Search and Replace搜寻与替换工具
  7. SPOJ GSS5 Can you answer these queries V
  8. 洛谷P1410 子序列
  9. 雷赛dmc2410控制卡,驱动器 光栅 加电机
  10. 数据结构算法C语言实现(四)---2.3循环链表与双向链表