【问题标题】:Very Weird Memory Leak With ARCARC非常奇怪的内存泄漏
【发布时间】:2012-12-18 03:45:17
【问题描述】:

下午好,

我正在对即将发布的 iOS 应用程序进行一些 Instruments 测试,但我注意到一些非常奇怪的内存泄漏,似乎来自系统库。

当我运行 Instruments 时,我得到了这个泄漏:

从我的角度来看,这非常奇怪!我查看了这些泄漏的调用树,它们似乎都是深度 C++ 系统调用。

更让我困惑的是,这个项目启用了 ARC,我通过分析器运行它,没有出现任何问题。 更奇怪的是,这不会发生在模拟器上,也不会发生在我真正的 iPad 上,但在我的 iPhone 上会发生这个问题。

当我选中“仅显示 Obj-C”和“隐藏系统库”时,调用跟踪消失了,这让我相信我的代码不对泄漏负责。

为什么会发生这种情况,我可以做些什么来解决它?

谢谢大家。

【问题讨论】:

  • 我要让你失望了:Apple 的代码不是没有错误的。 C++ 标准库中确实可能存在内存泄漏。
  • 感谢您的帮助!但是让我感到困惑的一件事是,如果是这种情况(Apple 的代码存在内存泄漏),这不会也出现在 iPad Instruments 运行中吗?
  • 我不会因为这个太自责。就像@H2CO3 所说,Apple 的库并不完美。这不是第一次在他们的一个库中发现内存泄漏。实际上,这种情况经常发生。
  • @user1274223 您正在测试哪个版本的 iPad 和 iPhone?如果您使用 iPhone 5 和较旧的 iPad 进行测试,可能是为 armv7x 编译的库中存在错误,而为 armv7 编译的库很好。
  • 我了解您希望您的代码不泄漏。同时,您无法修复您无权访问的代码。就 iOS 5.1 设备的使用情况而言,我不确定我们在这里谈论的是什么数字。

标签: objective-c ios memory-leaks automatic-ref-counting


【解决方案1】:

上面的泄漏不是你的应用程序内部的泄漏,它在苹果的库中,你不必担心。如果您已经修复了应用程序中的所有漏洞,那就没问题了。 Apple 不会因为这个小漏洞而拒绝你的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-06
    • 2015-05-09
    • 2021-03-28
    • 2020-12-19
    • 2011-04-01
    • 2012-03-07
    • 2012-04-03
    相关资源
    最近更新 更多