修复Cocoa / ObjC中的内存泄漏

时间:2009-08-17 16:13:06

标签: objective-c cocoa memory-management memory-leaks garbage-collection

我的程序存在严重的内存泄漏问题。我正在使用Apple的仪器来跟踪我的泄漏,并且在我的应用程序启动后的前几秒内,列出了数百个泄漏。问题是它们似乎都没有告诉我泄漏的来源。

我已经完成了所有课程并确保分配的所有内容都在最后发布,并且还启用了垃圾收集。另一个大问题是我尝试启动我的应用程序而没有启用垃圾收集,它只是崩溃。

有什么建议吗?

由于

编辑:如果需要源代码,我可以通过电子邮件发送

2 个答案:

答案 0 :(得分:2)

尝试通过AnalysisTool运行您的项目并查看它找到的内容。它本质上是Clang Static Analyzer的GUI前端。它将运行您的代码并查找诸如泄漏和错误发布等错误。然后它将逐步向您呈现它们,以帮助您更好地了解您在哪里犯错。

这是一个很棒的工具。

答案 1 :(得分:2)

您的问题标有“垃圾收集”。

你打开了GC吗?如果是这样,它是一个命令行工具吗?你是否将objc_startCollectorThread()称为main()中的第一项?

如果您打开GC,Leopard上的泄漏分析会在某些情况下显示出相当多的误报。如果您可以访问Snow Leopard,我建议您在那里进行分析,因为工具得到了显着改进。

铿锵静电分析仪&仪器完全正交。您需要同时使用它们,因为静态分析器不会在代码中找到所有潜在的泄漏。特别是,它不会发现 - 比方说 - 你有无限制的缓存增长或者无意中为你的对象图生根的全局可变集。

一旦解决了静态分析仪发现的所有问题,请使用仪器。