7

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

Image1.Picture := nil;

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

我对么?如果是这样,从 TImage 卸载和清除图像的“正确”方法是什么?

4

1 回答 1

12

TImage.Picture设置器在TImage.SetPicture()单元ExtCtrls中,它TPicture.Assign()Graphics单元中调用,它调用,它将在分配新的之前TPicture.SetGraphic()释放现有的。GraphicGraphic

所以使用

Image1.Picture := nil; 

最终会打电话

Image1.Picture.SetGraphic(nil); 

并且不会造成任何内存泄漏。

于 2014-06-02T16:29:56.360 回答