首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是记忆崩溃吗?NSZombies没有抓住它

这是记忆崩溃吗?NSZombies没有抓住它
EN

Stack Overflow用户
提问于 2012-12-20 16:37:41
回答 2查看 167关注 0票数 0

这个肯定是内存崩溃,还是应该寻找其他东西呢?

代码语言:javascript
复制
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

使用分析器,活动字节在任何时候都在10 3MB以下,当内存发生警告时,我将返回到3MB或更低的内存。

这个语句返回是,所以我假设我启用了僵尸:

代码语言:javascript
复制
getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")

当我从Xcode运行时,应用程序会在没有Xcode的情况下崩溃(在一些任意数量的内存警告之后)。

除了“启用NSZombies运行”之外,还有其他建议吗?这肯定是记忆崩溃吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-20 16:48:25

当代码试图访问“不存在”的内存时(即您试图使用的地址在虚拟地址空间中没有映射),就会发生SIGSEGV。

造成这种情况的确切原因可能是大量的事情--最常见的原因是:

  • 使用未(正确)初始化的指针。
  • 从数组的末端走出来。
  • 使用已释放的内存。

请注意,以上所有这些都是“未定义行为”的示例,因此您很可能会遇到这样的情况:代码虽然做错了什么,但代码不会崩溃,但是在其他情况下,相同的代码确实会出错。

票数 2
EN

Stack Overflow用户

发布于 2012-12-20 16:40:58

是的,这是一个与内存相关的错误(分段错误).请记住,NSZombies不能捕获每个内存错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13976612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档