一,堆与栈

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);

OC-copy的更多相关文章

  1. OC copy mutableCopy, 浅拷贝,深拷贝

    copy与mutableCopy都是深拷贝,区别是mutableCopy拷贝出的对象是可变的. OC对象基本都是通过指针访问,所以一般情况下,通过对指针的赋值都是浅拷贝,即只是拷贝了一份对象的指针,对 ...

  2. OC Copy基本使用(深拷贝和浅拷贝)

     首先,什么是copy? Copy的字面意思是“复制”.“拷贝”,是一个产生副本的过程. 常见的复制有:文件复制,作用是利用一个源文件产生一个副本文件. 特点:1.修改源文件的内容,不会影响副本文件: ...

  3. iOS - OC Copy 拷贝

    前言 copy:需要先实现 NSCopying 协议,创建的是不可变副本. mutableCopy:需要实现 NSMutableCopying 协议,创建的是可变副本. 浅拷贝:指针拷贝,源对象和副本 ...

  4. OC Copy and MutableCopy的使用

    #import <Foundation/Foundation.h> @interface Student : NSObject <NSCopying> // copy代表set ...

  5. OC Copy自定义类

  6. OC Copy和Property

  7. OC Copy和内存管理

  8. HEC-ResSim原文档

              HEC-ResSim Reservoir System Simulation             User's Manual       Version 3.1 May 201 ...

  9. OC中copy的使用

    @property内存管理策略的选择 1.非ARC 1> copy : 只用于NSString\block: 2> retain : 除NSString\block以外的OC对象: 3&g ...

  10. 详谈OC(object-c)深浅复制/拷贝-什么情况下用retain和copy

    读前小提示:对于深浅复制有一个清楚的了解,对于学习oc的朋友来说,至关重要.那么首先,我们要明白深浅复制是如何定义的呢.这里为了便于朋友们理解,定义如下. 浅 复 制:在复制操作时,对于被复制的对象的 ...

随机推荐

  1. 使用android studio时提示Unable to access Android SDK add-on list

    这个界面不用管,点击Cancel.到一个界面下边有个”Android SDK Location:“这个选路径的时候选你的android sdk的路径就好了.以后再打开就不会再报这个错了.

  2. SQL Server 自增字段重置

    --- 删除原表数据,并重置自增列 truncate table tablename --truncate方式也可以重置自增字段 --重置表的自增字段,保留数据 DBCC CHECKIDENT (ta ...

  3. python初识生成器 迭代器

    生成器 带有 yield 的函数在 Python 中被称之为 generator(生成器) def xragns(): #定义函数生成器 print('小伙') yield ('好') #加上yiel ...

  4. Spark MLib 数据类型

    1.  MLlib Apache Spark's scalable machine learning library, with APIs in Java, Scala and Python. 2. ...

  5. 【突发问题】昨天更新了OS X EI Capitan 出现了Cocoapods的 pod :command not found

    然后我百度:http://www.jianshu.com/p/6ff1903c3f11 果真,我想想然后执行了作者说的第一步,删除本地Cocoapods文件,然后发现我执行不了接下来的几个步骤了.所以 ...

  6. 问题导向VS目标导向:领导者要倾向哪种?

    人类进步的驱动: 问题驱动:目标驱动: 两者相互影响: 问题驱动是起点,并且在很多杂乱的问题中只有少数可以转化为目标,从而成为进步的动力:多数问题只是以干扰的形式出现. 问题驱动是被动的,并且常常干扰 ...

  7. Arcgis 几何网络分析

    ArcGIS:网络分析(转)   由于之前对网络分析的理解有很多问题,所以在网上找了一些资料,这是其中一篇我觉得比较好的,所以就整理了一下,发到网上来,留个底吧,呵呵 注:关于几何网络的建立见前面的& ...

  8. JAVA第三周课后作业

    JAVA课后作业 一.枚举类型 代码: enum Size{SMALL,MEDIUM,LARGE}; public cl ass EnumTest { public static void main( ...

  9. CentOS系统rsync文件同步 安装配置

    rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync 它的特性如下: 可以镜像保存整个目录树和文件系统. 可以很容易做到保持原来文件的权限.时间.软硬 ...

  10. PHP ob系列函数详解

    一. 相关函数简介:    1.Flush:刷新缓冲区的内容,输出.    函数格式:flush()    说明:这个函数经常使用,效率很高.    2.ob_start :打开输出缓冲区    函数 ...