自动释放池页面损坏

Posted

技术标签:

【中文标题】自动释放池页面损坏【英文标题】:Autorelease pool page corrupted 【发布时间】:2013-04-01 13:16:04 【问题描述】:

每当我使用 ASIHTTPRequest 进行网络服务调用时,我都会随机遇到以下崩溃:

autorelease pool page 0x9418000 corrupted  
  magic a1a1a100 4f545541 454c4552 21455341  
  pthread 0xb0103000 

我的代码是 ARC-fied 并使用 -fno-objc-arc 用于 ASIHTTP 类的 .m 文件。

是否有人对此有所了解,或者之前是否有人遇到过此类问题?提前致谢!

【问题讨论】:

我希望那是-fno-objc-arc 而不是-fno -objc -arc 【参考方案1】:

这可能表明您正在其他地方踩踏内存。我首先打开memory diagnostics 并查找错误。最可能导致此类错误的地方是 C 代码,尤其是在使用 C 数组或 C 字符串时。您可能在分配的内存之外写入,或者在释放内存后写入内存。

compiler bugs 有时会导致此类问题,但这种情况非常罕见,我会首先强烈怀疑您的代码。

【讨论】:

【参考方案2】:

正如 Rob 所指出的,这可能表明您在其他地方滥用内存。从 Xcode 8 开始打开内存管理诊断:

点击Xcode中的scheme菜单,选择底部的“Edit Scheme...”。 在“运行”步骤中,转到“诊断”选项卡。 在内存管理下,打开所有四个选项。我通常认为 Guard Malloc 可以发现最多的问题,但它们都很有用。

【讨论】:

以上是关于自动释放池页面损坏的主要内容,如果未能解决你的问题,请参考以下文章

自动释放池

29-oc自动释放池

在自动释放池 内释放创建的自动释放对象 [关闭]

0c-35-自动释放池使用注意

iOS自动释放池_原理_如何工作

iOS自动释放池_原理_如何工作