Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000
什么是内核保护错误?
在哪里可以清楚地找到有关异常类型和代码的详细信息?
您可以在 /usr/include/mach/exception_types.h 中查看 Mach 内核异常的完整列表。大多数(如果不是全部)都可以归结为“你的程序做错了什么”。
正如 hotpaw2 已经告诉你的那样,在这种情况下你做错的具体事情是取消引用NULL
。您可能已经在自己的代码中直接完成了此操作,或者通过传递来间接完成NULL
某些库函数或框架方法。例如,通过NULL
作为指针参数之一memcpy
是导致这次崩溃的好方法。
请注意,将 Objective-C 消息发送到nil
没问题——它不执行任何操作并返回 0。另一方面,传递nil
作为消息中的参数可能不合适。通过nil
在不需要的地方可能会导致抛出 NSException (这将导致SIGTRAP
, not SIGBUS
、信号),否则可能会导致某些代码最终取消引用NULL
。或者它可能完全无害。但除非文档明确说明可以,否则您不应该这样做,因为否则,即使现在可以工作,以后也可能会崩溃。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)