一,堆与栈

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. eclipse安装ADT

    ADT安卓开发工具安装 ADT(Android Development Tools)安卓开发工具,是安卓在Eclipse IDE环境中的开发工具,为Android开发提供开发工具的升级或者变更,简单理 ...

  2. jquery读取iframe子页面和父页面的处理

    1. jquery 在iframe子页面获取父页面元素代码如下: $("#objid", parent.document) 2. jquery在父页面 获取iframe子页面的元素 ...

  3. Hive UDF开发实例学习

    1. 本地环境配置 必须包含的一些包. http://blog.csdn.net/azhao_dn/article/details/6981115 2. 去重UDF实例 http://blog.csd ...

  4. Redis的复制(Master/Slave)

    是什么 : 也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 能干嘛: 读写分离,容灾恢复 怎么玩: 1 ...

  5. hadoop1.1.2安装过程

    实验环境:VMware 10.0.1+CentOS-6.6-i386 +jdk-6u24-linux-i586+hadoop-1.1.2.tar.gz 普通用户:michael 集群规划:1台mast ...

  6. 【poj2114】 Boatherds

    http://poj.org/problem?id=2114 (题目链接) 题意 给出一棵树,问是否存在两点间的距离为K. Solution 点分治嘛,跟poj1741差不多.. 然而为什么我调了一个 ...

  7. codeforces 613D:Kingdom and its Cities

    Description Meanwhile, the kingdom of K is getting ready for the marriage of the King's daughter. Ho ...

  8. codevs1138 聪明的质监员

    题目描述 Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n 个矿石,从1到n 逐一编号,每个矿石都有自己的重量wi 以及价值vi.检验矿产的流程是:见图   ...

  9. list去除并且把值相加

    package list; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import ja ...

  10. HDU 5738 Eureka

    传送门 题目大意: 给出平面上的$n$个点,每个点有唯一的标号($\text{label}$),这$n$个标号的集合记作$S$,点可能重合.求满足下列条件的$S$的子集$T$的数目: 1. $|T|\ ...