【发布时间】:2018-01-15 21:18:42
【问题描述】:
说我有这样的情况:
ITest = interface
procedure somethingHere();
end;
TImpl = class(TInterfacedObject, ITest)
procedure somethingHere();
end;
TImplSub = class(TImpl)
end;
鉴于上面的代码,如果我不使用 try-finally 语句,我可以使用这种代码而不会出现任何内存泄漏:
var a: ITest;
begin
a := TImpl.Create;
end;
子类也一样吗?
var a: ITest;
begin
a := TImplSub.Create;
end;
我认为既然TImplSub是TImpl的子类,那么TImplSub从父类继承了TInterfacedObject和ITest。上面的代码会不会泄露?
这可能不相关,但我如何检查上面的代码是否泄漏?
【问题讨论】:
-
测试应该很容易,ReportMemoryLeaksOnShutdown 设置为 True 将在您的程序终止时启用简单报告。
-
@nil 在表单的 onCreate 中设置 ReportMemoryLeaksOnShutdown?
-
我想设置的时候并不重要——至少在足够早的时候。我个人会将它设置在 dpr 文件中,因为我习惯于在那里查看。
-
最后尝试什么?
-
@SertacAkyuz a := TImpl.Create;最终不受尝试的保护我的意思是
标签: delphi