2
比方說,我有這樣的代碼在我單位:德爾福對象引用
TClass = class(tobject)
// ... implementation ...
end;
TControl = class(tobject)
private
FCheck: TClass
public
constructor Create(value: TClass);
// ... implementation...
end;
constructor TControl.Create(value: TClass);
begin
FCheck := value;
end;
正如你可以看到控制類要採取TClass
作爲構造函數的參數,所以我需要做這樣的事情:
//The 'a' is a TClass that has already been created
c := TControl.Create(a);
try
//... do what I need ...
finally
c.Free;
end;
這是很基本的:我要使用a
作爲構造函數的參數,但如果我在做什麼是安全的我無法理解。我有內存泄漏嗎?
在構造函數中,我做了FCheck := value
,我想這是正確的,因爲我傳遞了對象的引用。我是否必須在TControl中實施析構函數以釋放FCheck
?我無法理解我是否正確管理FCheck對象。
我打算使用對象a,但我不會釋放它。當我釋放c時,我是否必須釋放FCheck? a是公共的並且在表單create上創建,c是在一個過程中創建的 –
@RaffaeleRossi通常,對象只能由創建它的相同類獲得free'd。除非您有將所有權轉讓給其他人的可能性,否則您不應該擔心在其他地方將其釋放。這種意義上的「所有權」意味着負責任的階層。 –
Aaah確定了。所以我正在做的事情很好,因爲FCheck會在我打電話給c.Free的時候死掉。正確?會接受 –