2011-12-02 93 views
-1

我正在測試我的代碼,並且我意識到我釋放了一個自動釋放對象,但該應用程序沒有崩潰。 所以我創建了一個新的空項目從頭只有幾行字:雙釋放自動釋放對象不會崩潰

NSArray *array = [NSArray array]; 
[array release]; 
[array release]; 
[array release]; 
[array release]; 
... 

這不會崩潰從來沒有,也不會被標記爲GDB殭屍對象。如果我使用Product - > Analyze分析代碼,則不會發現任何錯誤。

正常情況下,它應該崩潰我認爲... 我使用Apple LLVM編譯器3.0測試Xcode 4.2,但舊gcc 4.2也是如此。

有關它爲什麼會發生的任何想法?

感謝

+0

我試過了。它墜毀了! :) – mayuur

+0

我認爲你正在運行與我不同的構建設置。你使用什麼編譯器和Xcode版本? – ggould75

+0

xcode 3,iOS 4.2 – mayuur

回答

2

這是一個是否啓用無操作的垃圾收集。我認爲,這是。

+0

是的,你是對的。我來自舊的內存模型沒有垃圾收集,所以我期待看到一個崩潰。 – ggould75

+1

所以我和在objective-c中沒有經驗,我直接去查找NSObject發佈的文檔,看看是否有不同的情況下:) –