这两种方法有什么区别,哪一种更好呢

解决方案 »

  1.   

    不知道,我用free的次数多,只有我自己写的类,采用destroy
      

  2.   

    二者的区别是,Destroy 会直接释放对象,而
    Free会事实检查该对象是否存在,如果对象存在,或者对象不为nil,它才会调用Destroy。因此,程序中应
    该尽量使用free来释放对象,这样更加安全一些。(但要注意,free 也不会自动将对象置为nil,所以在调
    用free之后,最好是再手动将对象置为nil。)
      

  3.   

    Delphi建议使用Free,因为它比 Destroy更为安全,同时调用Free会生成效率更高的代码。 TObject类有一个虚拟的Destroy虚构函数和一个非虚拟的Free函数。Free函数中是调用Destroy的。因此,当我们对任何对象(都是TObject的子类对象)调用 .Free();之后,都会执行 TObject.Free();,它会调用我们所使用的对象的析构函数 Destroy();。这就保证了任何类型的对象都可以正确地被析构。