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

Zio*_*Bit 7 delphi timage

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

Image1.Picture := nil;
Run Code Online (Sandbox Code Playgroud)

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

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

bum*_*mmi 12

TImage.Picture二传手是TImage.SetPicture()ExtCtrls单位,这就要求TPicture.Assign()Graphics单位,这就要求TPicture.SetGraphic(),这将释放现有Graphic分配新之前Graphic.

所以用法

Image1.Picture := nil; 
Run Code Online (Sandbox Code Playgroud)

最终会打电话

Image1.Picture.SetGraphic(nil); 
Run Code Online (Sandbox Code Playgroud)

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