2010-02-23 49 views
3

XCode儀器泄漏工具如何識別出物體是泄漏物還是尚未釋放的物體? 我對Objective C非常陌生,泄漏工具檢測到我使用的代碼中存在泄漏。但代碼對我來說聽起來很合理。所以只是想知道我能信任這個工具有多少?XCode內存泄漏檢測如何工作?

回答

4

作爲仍分配對象的「泄漏」,但您的應用程序不再有指向該對象的引用 。由於您不再有參考,因此您無法釋放該對象,因此這是一個泄漏。

正如leaks(1) man page說:

泄漏標識泄漏的內存 - 應用程序已分配的內存,但已丟失,無法被釋放。具體而言,泄漏檢查指定進程的內存是否有可能是指向malloc分配緩衝區的指針。任何從可寫入存儲器,寄存器, 或堆棧中的指針都可以訪問的緩衝區被假定爲正在使用的存儲器。也可以假定從malloc分配的緩衝區中的可達指針到達的任何緩衝區都處於使用狀態。無法訪問的緩衝區是泄漏; 緩衝區永遠不會被釋放,因爲沒有指針在內存中緩存存在,因而免費() 可能永遠不會被調用爲這些緩衝區

您可能還需要尋找到在儀器的工具ObjectAlloc中。

+1

謝謝,我明白什麼是泄漏,只是想知道XCode是否有給出錯誤警報的聲譽。感謝您指出了ObjectAlloc工具,我發現它的幫助有什麼問題。確實有泄漏。 – 2010-02-23 20:23:02

+1

隨着時間的推移,泄漏工具已經變得更好。這些天很少會出現假陽性。非常稀有。 – bbum 2010-02-23 22:25:20