malloc: *** mmap(大小=24576) 失败 (错误代码 = 12) 错误: 无法分配区域 - iOS



当我浏览我的应用程序一段时间时,我在iPod 4G上收到此错误,并且整个屏幕变白或应用程序挂起,然后我必须重新启动应用程序。

**malloc: *** mmap(size=24576) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug**

我知道错误代码 = 12 通常意味着内存问题,但我已为我的应用程序使用了 ARC。

当我快速连续单击应用程序中的多个按钮时,会发生相同的错误。

我用谷歌搜索了这个问题,但找不到任何东西。

任何帮助将不胜感激。

提前谢谢。

看起来内存不足。在didReceiveMemoryWarning方法中放置一个简单的 NSLog 语句,看看它是否触发。此外,请尝试运行 Instruments,以检查并查找应用中任何多余内存消耗的来源。虽然 ARC 很有帮助并且避免了大量手动干预,但它并不能确保您永远不会耗尽内存。

尝试通读有关调试malloc相关内容的内容。

请注意,使用 ARC 时,对象往往会被放入自动释放池中,因此,虽然您可能已经处理了一个对象并且它超出了范围,或者它的指针已被取消,但它可能仍然会一直徘徊到运行循环结束。

如果你有一个大的活动,它会创建很多临时对象,那么它可以填满内存。

一种解决方案是将带有临时对象的代码包装在@autoreleasepool{ }块中。

另一种方法是将活动拆分为多个部分,并在运行循环的单独迭代中运行它们。GCD或performSelector:after:0可以在这里提供帮助。

最新更新