我真的在泄露记忆吗?

时间:2009-10-03 16:03:20

标签: iphone objective-c memory-management

在Xcode中我运行我用漏洞仪器编写的程序

它表示泄漏被发现并且泄露的总字节数不断增加。

我看看泄露的物品,似乎没有一个物品来自我的程序。

例如QuartzCore OpenGLES libLLVMContainer.dyl libCoreVMClient.dylib libGFXShared.dylib

程序是否正在泄漏内存或者这只是苹果编写的错误代码并且应该是预期的,这是我的错吗?

4 个答案:

答案 0 :(得分:10)

如果你真的在寻找它们(这是我日常工作的一部分),Apple的框架中总会有一两个漏洞。但通常没有什么严重的,也没有相对普通/标准代码中发生的泄漏。

第一步是使用构建和分析对代码进行基本的健全性检查。它会捕获许多潜在的泄漏,但不是全部。

然后使用仪器。当您在Apple库中发现泄漏时,请查看分配的堆栈跟踪。具体来说,查找代码中的最低帧。这通常是你泄密的地方。

以这种方式思考;您的代码调用Apple框架,可以调用其他Apple库和框架。当Apple代码返回时,它会将一块内存交还给你。如果您没有正确管理内存,可能会造成泄漏。

答案 1 :(得分:3)

典型的程序会调用第三方库,例如GUI框架。如果程序没有释放它分配的资源,它们将不会被销毁。是的,这可能是你的错!

答案 2 :(得分:1)

我猜苹果没有内存泄漏。他们也有乐器。他们肯定做了测试。我唯一一次听说过泄漏是在UIKit网页浏览中。 我会对乐器进行一些阅读,并确保你正确地阅读它。

答案 3 :(得分:0)

使用构建和分析来查找它们