2011-03-01 118 views
0

東西我一直在想了一會兒。我知道爲了釋放內存,必須釋放對象(如NSMutableArray),但是原始數據類型(如int)不會。我的問題是,一個整數佔據的空間在什麼時候變得自由了?原始數據類型Vs的對象在目標C

例如,一類「myClass的」具有IVAR「INT一個」

「一」保持值某個整數值。

當「myClass」被釋放時,內存中保存「a」值的空間是否立即變爲空閒狀態?

在此先感謝。

回答

3

對於類ivars,釋放對象實例時解除分配內存 - 在最後一次[釋放]調用時釋放內存。對於本地int(和其他原始)變量,函數返回時。對於全局變量和靜態變量,當進程退出時。

另外,你可以用malloc()動態分配int。然後當你打電話給free()的時候它就被釋放了。

1

「a」被包括在「MyClass的」分配的內存。換句話說,當myClass被釋放時,「a」與它一起消失。

0

一個Objective C對象類似於一個指向malloc'd C結構的指針(包含聲明的和一些隱藏的實例變量)。當一個對象被釋放時,整個C結構內存塊,包括所有內部ivar存儲,都是免費的(以及其他需要的dealloc內務處理)。