肯定是内存崩溃,还是我应该寻找其他东西?
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x81093cd0
Crashed Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libobjc.A.dylib 0x33563f78 objc_msgSend + 16
1 Foundation 0x34d6b92c __NSFireDelayedPerform + 408
2 CoreFoundation 0x35919a2c __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 8
3 CoreFoundation 0x35919692 __CFRunLoopDoTimer + 358
4 CoreFoundation 0x35918268 __CFRunLoopRun + 1200
5 CoreFoundation 0x3589b49e CFRunLoopRunSpecific + 294
6 CoreFoundation 0x3589b366 CFRunLoopRunInMode + 98
7 GraphicsServices 0x33636432 GSEventRunModal + 130
8 UIKit 0x33073cce UIApplicationMain + 1074
使用分析器,实时字节总是低于10MB,当内存发出警告时,我会回到3MB或更低。
此语句返回YES,因此我假设我启用了僵尸:
getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")
当我从Xcode运行时,应用程序崩溃而Xcode甚至没有意识到(在任意数量的内存警告之后)。
除了“启用NSZombies运行?”之外的任何建议?而且,这绝对是一次记忆崩溃吗?
答案 0 :(得分:2)
当代码尝试访问“不存在”的内存时(即,您尝试使用的地址在虚拟地址空间中没有映射),会发生SIGSEGV。
确切原因可能是很多事情 - 最常见的是:
请注意,以上所有都是“未定义行为”的示例,因此您可能会遇到代码没有崩溃的情况,尽管它做错了,但在其他情况下,相同的代码会出错。
答案 1 :(得分:1)
是的,这是与内存相关的错误(分段错误)。请记住,NSZombies
无法捕获每个内存错误。