黑马程序员技术交流社区

标题: 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