一个类应该在哪里释放它的私有变量?

Bor*_*ens 3 delphi garbage-collection memory-management

由于Delphi中没有垃圾收集,您在哪里卸载变量?

假设我有一个私有变量的类型.是否有足够的Destroy方法可以完成这项工作?我是否需要在我的消费类中显式调用此destroy方法?

小智 10

在delphi中组织破坏的最好方法是始终考虑"谁将创建给定的变量".

如果你也在这个上下文中释放它们(对于私有变量类的destroy方法),你不太可能遇到内存泄漏.

实际上,类的析构函数通常不会被调用

myInstance.Destroy();
Run Code Online (Sandbox Code Playgroud)

相反,典型的做法是通过

FreeAndNil(myInstance);
Run Code Online (Sandbox Code Playgroud)

要么

myInstance.Free();
Run Code Online (Sandbox Code Playgroud)

因为delphi将按顺序处理析构函数方法

  • 如果你遵循"谁创造,摧毁",那么你已经98%了. (9认同)