我正在开发一个iOS应用程序,当我在自己的设备上运行它时,收到很多以下警告:
MyApp(2138,0x104338000)malloc:***无法保护0x104950000的PoSTLude保护页面的(0x3)区域
它们不会停止执行,但看起来很吓人,可能与我的应用偶尔崩溃有关。我用Google搜索,在整个网络上只找到两个页面,却没有任何帮助。我想知道这里是否有人知道如何解决这个问题?
编辑:这是我使用的产品方案:
最佳答案
您看到的错误来自Apple's malloc implementation,是由于vm_protect
尝试修改已添加到您的内存分配中的保护页的内存保护时失败。
因此,听起来好像您已启用debugmalloc
的MallocGuardEdges
标志(我认为debugmalloc
在ios设备上不可用)。
消息中的0x3
= VM_PROT_READ | VM_PROT_WRITE
表示vm_protect
无法使页面成为可读写状态,这意味着这是对free
的响应。
唯一记录的 return codes for vm_protect
是KERN_PROTECTION_FAILURE
和KERN_INVALID_ADDRESS
,因此在这一点上,我只能猜测发生了什么。对页面进行读写操作似乎是一个适度的请求,对于有效的页面,您不会期望KERN_PROTECTION_FAILURE
,而这会留下KERN_INVALID_ADDRESS
,这意味着您在0x104950000
上的页面可能无效。
这将暗示内存重载错误。
关于ios - 如何在iOS上修复 "malloc: can' t后备保护页面的保护区域”警告,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29809940/