【问题标题】:xcode instrument shows memory leaks on returning char pointerxcode 仪器在返回 char 指针时显示内存泄漏
【发布时间】:2012-07-07 15:18:47
【问题描述】:

我有一个返回字符串集合的函数。所有内存分配都在该函数内部完成,因为每次调用该函数时字符串的大小都会发生变化。使用这些字符串后,所有分配都被释放。但是,当我在带有泄漏测试仪器的模拟器上运行我的应用程序时,它会显示我实际 malloced char*s 的位置。

我的困惑是,尽管我正确地释放了所有字符串,但它仍然被视为我的应用程序的泄漏吗?或者这是 xcode 仪器的一种错误观察?

【问题讨论】:

  • 你怎么知道你正在正确地释放所有这些字符串,特别是因为仪器告诉你不是这样?
  • 首先,显示代码。其次,当 Instruments 识别出泄漏时,它会向您显示泄漏内存的分配位置。那不一定是泄漏的地方。任何影响该内存分配生命周期的代码都可能导致泄漏。任何过度保留或释放不足都将承担责任。您必须查看单个泄漏对象的保留/释放历史记录,以了解应归咎于哪个代码。
  • 我同时使用 CPP 和 Objective C。在我的本机 cpp 函数中,我正在分配内存并返回这些字符串。在 Objective C 部分中,首先我使用这些字符串,然后释放所有字符串。位置仪器向我显示泄漏是在 malloc'ing over char 指针处,我在使用后正确处理它。有什么方法可以观察我的应用程序实例当前分配的总内存?

标签: objective-c memory-leaks char xcode-instruments


【解决方案1】:

嗯,您使用的工具可能是正确的,或者它可能会给您带来误报。您的帖子中提供的信息无法说明...

一般来说,我倾向于假设调试工具给出的警告是有效的,直到我能证明不是这样。因此,在您的情况下,我会查看代码以找出调试工具标记它的原因,而不是仅仅将其视为无法解释的误报;当我处理我没有经验的事情时更是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2011-07-09
    • 2012-04-03
    • 2018-09-27
    • 2019-07-17
    • 2016-10-23
    相关资源
    最近更新 更多