【问题标题】:iPhone Development - What can be done about this memory error:iPhone 开发 - 对此内存错误可以做些什么:
【发布时间】:2010-08-02 16:29:18
【问题描述】:
Dual Search(8896,0xb014b000) malloc: *** error for object 0x5a1e0f0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

谢谢!

【问题讨论】:

  • 您需要添加更多信息。您已调用 free() 以获取未通过 malloc() 分配内存的指针。您的代码中是否有任何“free(somevar)”实例?

标签: iphone memory-leaks memory-management


【解决方案1】:

您可以尝试按照 SDK 的建议为 malloc_error_break 设置断点。为此,只需在应用程序启动后的任何时间在控制台(gdb)提示符后键入“b malloc_error_break”。 Xcode 将在您执行无效内存释放时停止在调试器中。

【讨论】:

    【解决方案2】:

    听起来像是双重释放。我强烈建议您先查看the rules。这些对于了解和理解至关重要。它们还将帮助您了解何时以及出于什么原因调用 -release、-copy、-retain 等。

    快速浏览一下,您也许可以通过 CSA 使用构建和分析来捕捉它,但不要屏住呼吸。

    【讨论】:

    • 谢谢你的回复,我想了想,所以我从我的代码中删除了任何对象释放,仍然是这个错误
    • 这并没有改变我的建议。并且删除所有 -releases 是一个坏主意。如果您认为自己可能会这样做,请考虑使用 NSZombiesEnabled。
    【解决方案3】:

    删除所有对象释放意味着您分配的内存不会被释放,因此会对内存管理产生影响。确保您创建的每个内存分配都有相应的释放。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多