【发布时间】: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