9

是否有关于使用 Guard Malloc 进行解释和解决问题的好教程?

我收到类似“无法为 VM 分配 262144 字节”的消息,但我不知道这意味着什么。最初我认为这是系统中缺少 RAM,但可能不是这样。如果这是一个问题,我迫切需要学习如何解释和捕捉错误。

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

非常感谢帮助。几天来,我一直在处理可能的内存错误。而且我还不能为 iOS 编译 Valgrind。

4

3 回答 3

5

1) 我一直在使用保护 malloc 来记录分配失败,以解决地址空间耗尽的问题——每个分配都至少占用一页无法重用的地址空间。使用当前未分配的内存将在保护 malloc 中崩溃,不会导致分配失败。

2)顾名思义,guard malloc 代替了 malloc(3) 的实现,所以会检查使用 malloc 的 C 代码。

请注意,guard malloc 不是灵丹妙药。您仍然需要通过测试来暴露您的应用程序的错误;守卫 malloc 只会导致崩溃更早更可靠地发生。

您可能还想阅读“man libgmalloc”。

于 2012-12-08T09:55:26.670 回答
2

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

于 2014-08-01T09:55:59.583 回答
0

正如您所怀疑的,“无法分配 VM”是缺少可用 RAM。

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

您需要:

  1. 购买更多内存
  2. 关闭 Mac 上所有其他正在运行的程序
  3. 通过分析/优化减少程序使用的内存。
于 2013-06-29T15:11:44.607 回答