什么是EXC_BAD_ACCESS以及如何调试

某些时候,你可能会遇到由EXC_BAD_ACCESS引起的崩溃。在这片文章中,你将学会什么是EXC_BAD_ACCESS,以及它是由什么引起的。我也将提出一些解决由EXC_BAD_ACCESS引起的bug的技巧。

什么是EXC_BAD_ACCESS?

一旦你理解了EXC_BAD_ACCESS的根本原因,你会更好地理解它这个含义模糊的名称。这里有一个简单的解释和一个更加专业的解释。让我们首先以这个简单的解释开始吧。

保持简单

无论何时你遇到了EXC_BAD_ACCESS,那就意味着你正在发送一个消息给一个对象,而这个对象已经被释放掉了。这是最常见的情况,但是下面来看看更多的解释。

真正含义

专业的解释有一些复杂。在C和Objective-C中,经常处理指针。指针无非是存储另一个变量的内存地址的变量。当你发送一个消息给一个对象,那么指向这个对象的指针需要被引用。这意味着,你取得这个指针指向的内存地址而且访问那块内存的值。

当那块内存不再与你的应用程序映射,或者,换一种说法,那块内存不再以你所期许的方式被使用,那么,就有可能无法访问到那一块内存。当这种情况发生的时候,内核发送异常( EXC ),表明你的应用程序无法访问到那块内存(BAD ACCESS)。

概括起来就是:当你遇到EXC_BAD_ACCESS时,意味着你在尝试向一块内存发送消息,而这块内存无法执行这个消息。

然而,有时候,EXC_BAD_ACCESS是由一个corrupt pointer(即野指针)引起的。每当你的应用

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值