A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 1722413885 中级黑马   /  2014-4-8 16:14  /  922 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 1722413885 于 2014-4-8 23:59 编辑

在OC中,在main函数中先创建了一个对象,没有释放它,当程序执行到main函数的return语句后,程序是直接结束还是先释放刚才那个对象再结束?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

正序浏览
本帖最后由 程浩 于 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调用方法)

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
程序直接结束了,也意味着内存释放了,最好是之前释放,节省内存。
回复 使用道具 举报
对象会随着程序的结束而被释放的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马