方式一:
Image.Picture.Bipmap.Assign(JPEG对象)方式二:
Function GetPicture:TPicture;
Begin
Result:=TPicture.Create;
......
End;
Image.Picture:=GetPicture;自己怀疑方式二比方式一多占用系统资源,因为多生成了一个Picture对象;
还是Image.Picture被赋值后指向GetPicture生成的对象,和Image.picture的自己的Picture合为一体,从而和方式一占用的系统资源相同?
Image.Picture.Bipmap.Assign(JPEG对象)方式二:
Function GetPicture:TPicture;
Begin
Result:=TPicture.Create;
......
End;
Image.Picture:=GetPicture;自己怀疑方式二比方式一多占用系统资源,因为多生成了一个Picture对象;
还是Image.Picture被赋值后指向GetPicture生成的对象,和Image.picture的自己的Picture合为一体,从而和方式一占用的系统资源相同?
constructor TImage.Create(AOwner: TComponent);
begin
....
FPicture := TPicture.Create;
end;在 Image.Picture:=GetPicture的时候,只是将指针指向新建的TPicture
自动创建的FPicture还在内存里
执行的就是Image.Picture.Assign所以你代码的最终结果应该是内存泄露, GetPicture生成的TPicture没人释放