我正在开发一个iOS应用程序,当我在自己的设备上运行它时,收到很多以下警告:

MyApp(2138,0x104338000)malloc:***无法保护0x104950000的PoSTLude保护页面的(0x3)区域

它们不会停止执行,但看起来很吓人,可能与我的应用偶尔崩溃有关。我用Google搜索,在整个网络上只找到两个页面,却没有任何帮助。我想知道这里是否有人知道如何解决这个问题?

编辑:这是我使用的产品方案:

最佳答案

您看到的错误来自Apple's malloc implementation,是由于vm_protect尝试修改已添加到您的内存分配中的保护页的内存保护时失败。

因此,听起来好像您已启用debugmallocMallocGuardEdges标志(我认为debugmalloc在ios设备上不可用)。

消息中的0x3 = VM_PROT_READ | VM_PROT_WRITE 表示vm_protect无法使页面成为可读写状态,这意味着这是对free的响应。

唯一记录的 return codes for vm_protect KERN_PROTECTION_FAILUREKERN_INVALID_ADDRESS,因此在这一点上,我只能猜测发生了什么。对页面进行读写操作似乎是一个适度的请求,对于有效的页面,您不会期望KERN_PROTECTION_FAILURE,而这会留下KERN_INVALID_ADDRESS,这意味着您在0x104950000上的页面可能无效。

这将暗示内存重载错误。

关于ios - 如何在iOS上修复 "malloc: can' t后备保护页面的保护区域”警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29809940/

10-13 06:35