Does clearing an image by assigning Image1.Picture := nil; cause a memory leak?
delphi, timage
Solution
The `TImage.Picture` setter is `TImage.SetPicture()` in the `ExtCtrls` unit, which calls `TPicture.Assign()` in the `Graphics` unit, which calls `TPicture.SetGraphic()`, which will free an existing `Graphic` before assigning a new `Graphic`.
So the usage of
Image1.Picture := nil;
Will ultimately call
Image1.Picture.SetGraphic(nil);
And will not cause any memory leak.
Problem
I have read here http://delphi.about.com/od/adptips2005/qt/cleartimage.htm that a way to clear an image from a TImage is to assign nil to `.Picture`, like this: ``` Image1.Picture := nil; ``` I just want to be sure... I guess the `Image1.Picture.loadFromFile(fileName)` will allocate some memory and simply setting it to nil, without freeing the memory, will lead to a memory leak. Am I correct? If this is so, which is the "proper" way to unload and clear an image from a TImage?