如何在 Xcode 中解释 Guard Malloc 中的"failed to VM allocate"



有关于Guard Malloc解释和解决问题的好教程吗?

我收到类似"无法虚拟机分配262144字节"的消息,我不知道这意味着什么。起初我以为是系统内存不足,但可能不是这样。如果这是一个问题,我迫切需要学习如何解释和捕捉错误。

我对Guard Malloc的另一个问题是,它是保护项目C代码中分配的内存(考虑到名称,它应该是正确的),还是只适用于Objective-C?我问的原因是我刚刚发现NSZombieEnabled只适用于Obj-C。

非常感谢您的帮助。几天来,我一直在处理可能的记忆错误。我还没能为iOS编译Valgrind。

1)我一直在将使用保护malloc的分配失败归因于地址空间耗尽——每次分配至少占用一页无法重用的地址空间。使用当前未分配的内存将在保护malloc中崩溃,而不会导致分配失败。

2) 顾名思义,guard-malloc取代了malloc(3)的实现,因此将检查使用malloc的C代码。

注意,后卫malloc不是银弹。你仍然需要通过测试来暴露你的应用程序的漏洞;保护malloc只会使崩溃更早、更可靠地发生。

你可能还想读一读"man libgmalloc"。

我看到它在设置了Guard Malloc的ios模拟器上运行。为模拟器选择64位设备阻止了出现错误。

"分配虚拟机失败"是因为缺少可用的RAM,正如您所怀疑的那样。

只有当我关闭mac上的所有其他程序时,我才能可靠地使用Guard Malloc,即使这样,它有时也会因使用大量内存的贪婪程序而失败。

您需要:

  1. 购买更多RAM
  2. 关闭mac上所有其他正在运行的程序
  3. 通过分析/优化减少程序使用的内存

相关内容

最新更新