我在这里读到 http://delphi.about.com/od/adptips2005/qt/cleartimage.htm ,从 TImage 清除图像的一种方法是将 nil 分配给 .Picture
,如下所示:
Image1.Picture := nil;
我只是想确定...我猜
Image1.Picture.loadFromFile(fileName)
会分配一些内存并简单地将其设置为 nil,而不释放内存,会导致内存泄漏。我对么?如果是这样,从 TImage 卸载和清除图像的“正确”方法是什么?
最佳答案
TImage.Picture
setter 是 TImage.SetPicture()
单元中的 ExtCtrls
,它调用 TPicture.Assign()
单元中的 Graphics
,它调用 TPicture.SetGraphic()
,它会在分配新的 Graphic
之前释放现有的 Graphic
。
所以使用
Image1.Picture := nil;
最终会打电话
Image1.Picture.SetGraphic(nil);
并且不会造成任何内存泄漏。
关于delphi - 通过分配 Image1.Picture := nil; cause a memory leak? 清除图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23991829/