这样会内存泄漏吗?解决方案
这样会内存泄漏吗?
TTest=class
public
x:integer;
Constructor Create();
Destructor Destroy;override;
end;
constructor TTest.Create;
begin
x:=8;
end;
destructor TTest.Destroy;
begin
showmessage( 'ok ');
inherited;
end;
主程序中:
showmessage(inttostr(TTest.Create().x));
我看过,这样生成的对象不会调用Destroy,会不会造成内存泄漏??(如果TTest含有指针的话)
------解决方案--------------------
答案是肯定的, 必须Free
------解决方案--------------------
with TTest.Create() do
begin
showmessage(inttostr(x))
Free();
end;
------解决方案--------------------
Create以后 必须Free
TTest=class
public
x:integer;
Constructor Create();
Destructor Destroy;override;
end;
constructor TTest.Create;
begin
x:=8;
end;
destructor TTest.Destroy;
begin
showmessage( 'ok ');
inherited;
end;
主程序中:
showmessage(inttostr(TTest.Create().x));
我看过,这样生成的对象不会调用Destroy,会不会造成内存泄漏??(如果TTest含有指针的话)
------解决方案--------------------
答案是肯定的, 必须Free
------解决方案--------------------
with TTest.Create() do
begin
showmessage(inttostr(x))
Free();
end;
------解决方案--------------------
Create以后 必须Free