内存管理初级
2014-08-14 22:46
162 查看
***自己每开辟一次空间,自己要对其(自己开辟的)进行释放;对引用计数+1,相应的也要对引用计数-1;不必管系统对空间的操作,系统会对其进行处理. 1.能让引用计数改变的五个方法 (1)+alloc开辟内存空间,将对象的引用计数+1 (2)-retain将对象的引用计数+1 (3)-copy (4)-release将对象的引用计数立即-1 (5)-autorelease将对象的引用计数-1(不是立即的,将来的某个时刻) autorelease会将声明为autorelease的对象放入离他最近的自动释放池中,当自动释放池销毁时,会向池中的每一个对象发送一个release消息 2.当引用计数为0时,系统会自动回收内存,我们只管理引用计数 3.改变引用计数可能带来的问题 (1)过渡释放 现象:如果引用计数为0时,当写完和内存引用计数-1有关的操作后,程序立即crash 原因:空间被系统回收之后,不能再做和引用计数-1有关的操作,否则会立即crash 解决方案:删除释放空间操作 (2)野指针异常: 现象:当空间被释放后,继续用指针变量(对象)访问该空间,可能会崩溃,也可能不会崩溃,写到某一行代码时突然崩溃(没有写任何和引用计数相关的代码) 产生原因:该对象的空间已经被系统回收,不能再访问没有所有权的对象 解决方案:空间被系统回收之后,禁止访问 4.内存管理基本原则 如果你对一个对象进行alloc,retain,copy之后,你就拥有了该对象的所有权,你就必须对它进行release或者autorelease(也就是自己每写一个alloc,retain,copy之后,就必须对它进行release或者autorelease)
相关文章推荐
- day9: 内存管理初级:内存管理的方式、引用计数机制,影响计数的各个方法、dealloc方法、内存管理的基本原则
- OC__内存管理初级
- 内存管理初级基础
- 分享:C语言杂谈之一-----内存管理(初级)
- OC 内存管理(初级)
- 内存管理初级基础--代码
- OC初级基础语法与内存管理MRC
- 9、内存管理初级
- oc的内存管理初级
- 进击的KFC:OC(第九天):内存管理初级
- OC - 第九章 内存管理( 初级 )
- 内存管理初级
- OC内存管理初级
- OC第九天:内存管理初级
- 内存管理初级
- OC内存管理的初级理解
- setter 和 getter 高级 以及内存管理初级
- C语言内存管理(初级)----动态数组
- C语言内存管理(初级)----链表
- OC内存管理初级