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的时候死掉。正确?会接受 –