Delphi中的Free和Nil 在Delphi中釋放對象資源時一般用Obj.Free(Obj為一個實例名),不過程Delphi中還有一個FreeAndNil(對象名)函數(shù),那么用哪個好呢?Free和Nil的本質(zhì)又都是什么呢? 在Delphi中一個對象名只是一個指向該對象的指針,可以有多個指針指向同一個對象地址。Nil是將指針置空,而Free則將指針指向的對象銷毀掉。如下所示: Obj.Free; //將Obj所指向的對象銷毀。 Obj:= nil; //將Obj指針置空。如果將上面的一句放在后面,則Free時會報錯,因為指針不指向該對象的地址,也不指向任何內(nèi)存地址。 還 有在銷毀對象時一定要注意,看還有沒有其他指針指向該對象,如果有卻銷毀掉了,那么其他指針調(diào)用該對象時會報錯。如果有多個指針指向同一個對象時,不要用 FreeAndNil來銷毀對象,因為不確定是否還有指針指向該對象,此時只需把不用的指針置空就行了,不過在所有指針都不指向該對象時,一定要記得銷毀 掉,以釋放資源。 |
|