通过分配Image1.Picture:= nil清除图像;导致内存泄漏?

时间:2014-06-02 09:57:27

标签: delphi timage

我在这里阅读http://delphi.about.com/od/adptips2005/qt/cleartimage.htm,从TImage中清除图像的一种方法是将nil分配给.Picture,如下所示:

Image1.Picture := nil;

我只是想确定...我猜Image1.Picture.loadFromFile(fileName)将分配一些内存,只需将其设置为nil,而不释放内存,将导致内存泄漏。

我说错了吗?如果是这样的话,那就是"正确的"从TImage卸载和清除图像的方法?

1 个答案:

答案 0 :(得分:12)

TImage.Picture设置中的TImage.SetPicture()设置符为ExtCtrlsTPicture.Assign()单位调用Graphics单元中的TPicture.SetGraphic(),该单位调用Graphic,在分配新的Graphic之前,我们会释放现有的Image1.Picture := nil;

所以

的用法
Image1.Picture.SetGraphic(nil); 

最终会致电

{{1}}

并且不会导致任何内存泄漏。