TRasterImage 变量的 Free 和 FreeImage 之间的区别?

Difference between Free and FreeImage for TRasterImage variables?

在我的 Lazarus 项目中,我使用的变量是 TPortableNetworkGraphic类型,继承自TRasterImage。到目前为止,我已经使用 Free 方法发布了它们,但我注意到对于这些类型也存在 FreeImage 方法。

这两者有什么区别?我应该使用哪一个,或者两者都叫?

如果我们调查这些方法,我们会发现以下内容:

方法Free 源自TObject。调用它会破坏您的 class 实例。

方法 FreeImage 来自 TRasterImage 并且等于来自同一 class 的 SetHandle(0) 方法。后者在技术上主要处理 FSharedImage 变量(TSharedRasterImage class 实例)及其 Handle 属性。换句话说,在调用 FreeImage 之后 TPortableNetworkGraphic class 的实例仍然是 "alive".