黑马程序员技术交流社区
标题:
OC内存管理问题
[打印本页]
作者:
1722413885
时间:
2014-4-8 16:14
标题:
OC内存管理问题
本帖最后由 1722413885 于 2014-4-8 23:59 编辑
在OC中,在main函数中先创建了一个对象,没有释放它,当程序执行到main函数的return语句后,程序是直接结束还是先释放刚才那个对象再结束?
作者:
悟中生有
时间:
2014-4-8 16:53
对象会随着程序的结束而被释放的
作者:
Max_骏
时间:
2014-4-8 17:20
程序直接结束了,也意味着内存释放了,最好是之前释放,节省内存。
作者:
程浩
时间:
2014-4-8 17:41
本帖最后由 程浩 于 2014-4-8 17:45 编辑
虽然这样没有错误,但是最好还是按原则来release对象
另:以下是release使用错误的笔记:
僵尸对象:已经被回收内存的对象
野指针:指向僵尸对象(不可用内存)的指针
1.此时会报错:EXC_BAD_ACCESS------由于访问了一块坏的内存(已经被回收,不可被访问的内存)
2.如果继续使用对象调用任何方法(包括[p retain]),则会报错:-[Person setAge:]: message sent to deallocated instance 0x100109a10----会出现闪退
如何避免:设置p=nil 变为空指针,p指针就不存在,给空指针发送消息就不会报错(即p调用方法)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2