11

我有一个应用程序,其中我有一些视频和音频以及一些应用程序内购买。所有 r 在模拟器中都很棒并且运行良好。但是昨天我创建了一个应用程序并尝试在它上面运行它从一开始就崩溃了。错误报告是

malloc: *** error for object 0x165060: pointer being freed was not allocated
  *** set a breakpoint in malloc_error_break to debug

谁能知道解决方案。我不知道哪里出了问题,在模拟器中它运行良好。有人可以帮助我吗?

4

5 回答 5

4

我按照talkol的建议跟随

就我而言,我替换了以下行

[myMutualArray removeAllObjects];

[myMutualArray removeAllObjects]; myMutualArray = nil;

错误消失了!

于 2014-12-26T09:56:24.543 回答
4

您可能释放对象的次数过多(例如,调用一次 alloc 并释放两次)。要找出在哪里,请看一下这个问题中的技术:如何找到 malloc "double free" 错误的原因?

我个人喜欢这种NSZombieEnabled方法。

另一个技巧是在释放变量后将它们设置为 nil。

例如:[bla release]; bla = nil;

这可以确保您不会意外释放它们两次,因为释放nil没有任何作用。

于 2012-08-21T08:11:47.703 回答
1

请测试程序是否有内存泄漏,还要检查自动释放以及您是否正确释放对象。此外,我们需要检查释放的对象是否分配了内存。您还需要注意自动释放​​,因为不小心我们可能会释放一个数组或一个字符串或任何已经自动释放的对象...

以下是找出确切问题的一些提示:

  1. 您可以通过分析项目来测试泄漏(单击 shift+command+k)

  2. 使用仪器工具,即运行泄漏

  3. 在 Xcode 中启用 NSZombie,过程可以在这里找到

希望它有帮助并且有效!

于 2013-09-19T11:12:25.640 回答
0

在没有看到任何代码的情况下,我们无法为您提供帮助。但是您可以自己找到问题,错误消息甚至会告诉您该怎么做:设置断点malloc_error_break,您通常会在堆栈跟踪中找到导致问题的代码。

仅仅因为它在模拟器中工作并不意味着您的代码是 100% 正确的。一些错误只出现在真实设备上(反之亦然)。

于 2012-08-21T05:56:13.097 回答
0

这可能是由 safari 检查器引起的,您可以禁用它们。有关更多详细信息,请参阅此帖子

在此处输入图像描述

于 2017-05-10T07:14:38.273 回答