黑马程序员技术交流社区

标题: 关于野指针与僵尸对象的笔记 [打印本页]

作者: 会长大的小牛    时间: 2015-11-20 21:44
标题: 关于野指针与僵尸对象的笔记

MRC
为什么要有内存管理?
       不对内存管理的话会造成内存的泄露
内存管理主要是对内存中的哪个区进行 管理?为什么?  全局变量没初始化在bss段  初始化之后在数据区
       堆区,堆区的内存由程序员手动申请和释放,如果不进行管理会造成僵尸对象从而内存泄露.
内存管理的范围?
       对继承NSObject的对象进行管理,对其他基本类型无效.


什么是引用计数器?
     用来计算当前对象的拥有者的个数.
系统是通过什么来管理一个对象的内存的?
     引用计数器的值
系统如何引用计数器的操作?
      retain使计数器加一  release  使计数器减一

内存管理的原则?
   1, 只要还有人在使用某个对象,那么这个对象就不会被回收
      如果想使用这个对象 应该让对象先retain一次
      如果不想使用这个对象了,应该让这个对象release
   2, 谁创建,谁release  这个谁指的是对象类型的指针
   3,谁retain 谁release   这个谁指的也是对象类型的指针   retain 之后返回的是一个对象

内存管理研究的内容?
    野指针     1)定义指针没有被初始化    2)对象空间被释放了但是指针变量还在
    内存泄露  栈区的变量被释放,而堆区的对象没有被释放  
  如果一个对象被释放了这是这个对象就叫僵尸对象
如何避免野指针?(野指针是指向垃圾内存的指针,空指针是指向NULL的指针)
    1,开启僵尸对象检测
     2,使指针指向nil

nil/Nil/NULL的区别
   nil   是给对象指针赋值
   Nil   是给类对象赋值  class类型
   NULL  通用指针


常见对象的内存泄露的原因?
内存泄露的3中情况    (无非就是创建的对象没有及时释放)
   1, 创建之后 没有release   局部变量指针释放但是对象没有释放  
   2,retain 之后没有release   
   3,不当的使用nil    造成对象指针无法retain 和release  从而造成内存泄露
   4,在方法的内部retain 但是没有release  也会造成内存泄露
类与类组合的三个关系:组合 ,依赖,,关联

栈区的已经被回收,堆区的没有被释放    叫内存泄露

作者: 呐小伟    时间: 2015-11-20 21:51
黑马 顶起      
作者: 大魔王seven    时间: 2015-11-20 21:58
黑全面给个赞!
作者: arhui    时间: 2015-11-20 22:22
内存管理好复杂
作者: liury    时间: 2015-11-21 22:53
整理的很好
作者: guitarjason    时间: 2015-11-21 23:24
笔记都是自己总结收货的精华
作者: linexs    时间: 2015-11-21 23:45
----------华丽的分割线----------
雁过留声,人过留名,回帖是一种美德,谢谢!
作者: 罗文强    时间: 2015-11-26 00:52
整理的不错!赞一个
作者: cc_2436    时间: 2015-11-26 22:49
666666666666
作者: xqlyn123    时间: 2015-11-26 23:01
顶起加油
作者: IPswhatb“is”    时间: 2015-11-26 23:14
看起来思路是清晰啊,,但就是不是很理解
作者: liuch111    时间: 2015-11-26 23:43
内存泄露是指程序在运行过程中动态申请的内存空间不再使用后没有及时释放,从而很可能导致应用程序内存无线增长。更广义的内存泄露包括未对系统的资源的及时释放,比如句柄等。
作者: Mr.Yan    时间: 2015-11-26 23:45
僵尸对象!{:2_34:}
作者: liuch111    时间: 2015-11-26 23:47
liuch111 发表于 2015-11-26 23:43
内存泄露是指程序在运行过程中动态申请的内存空间不再使用后没有及时释放,从而很可能导致应用程序内存无线 ...

OutOfMemory  oom
作者: abba008    时间: 2015-11-26 23:50
顶!!!!!!!!!!!
作者: liuch111    时间: 2015-11-26 23:57
OutOfMemory  oom     
作者: blazehot18    时间: 2015-11-26 23:58
厉害!超赞!
作者: 核酸的双链    时间: 2015-11-27 00:06
好东西,感谢分享
作者: 韦德460    时间: 2015-11-27 08:42
已收藏!!!
作者: liruixue    时间: 2015-11-27 08:44
笔记很全加油!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2