Delphi里析构函数一定要自己调用吗
1个回答
2017-02-15 · 知道合伙人软件行家
关注
展开全部
试谈下个人的理解:
1、用类的 Create 构造函数来建立一个类的实例之后,通常需要调用 free 等函数来保证类的实例的注销。在使用对象之前,必须先建立一个对象,并且及时销毁对象(destory),以释放资源。
2、如果在建造类的实例时,给类(组件)指定了“宿主”(比如,Form窗体类),则由“宿主”来管理对象的销毁,即不必手动调用该组件的析构函数。
当没有确定类(对象)的实例有可以进行统一管理对象销毁之前,一般都需要手动调用析构函数来保证对象的安全销毁。简单来说,就是手动编写代码生成的,通常也需要手动编写代码注销。
举例来说:当在 IDE 设计器里,生成的窗体以及窗体中的各个组件,这些不需要调用析构类函数释放资源;而在代码当中编写的,就需要自己编写代码进行释放为好。
在 delphi 语言里,析构函数为 destroy,但安全的调用不是使用 destory,而是使用 free 或是 freeAndNil,在 free 的代码中有判断对象是否存在的操作, 所以用 free 比用 destroy 安全。
1、用类的 Create 构造函数来建立一个类的实例之后,通常需要调用 free 等函数来保证类的实例的注销。在使用对象之前,必须先建立一个对象,并且及时销毁对象(destory),以释放资源。
2、如果在建造类的实例时,给类(组件)指定了“宿主”(比如,Form窗体类),则由“宿主”来管理对象的销毁,即不必手动调用该组件的析构函数。
当没有确定类(对象)的实例有可以进行统一管理对象销毁之前,一般都需要手动调用析构函数来保证对象的安全销毁。简单来说,就是手动编写代码生成的,通常也需要手动编写代码注销。
举例来说:当在 IDE 设计器里,生成的窗体以及窗体中的各个组件,这些不需要调用析构类函数释放资源;而在代码当中编写的,就需要自己编写代码进行释放为好。
在 delphi 语言里,析构函数为 destroy,但安全的调用不是使用 destory,而是使用 free 或是 freeAndNil,在 free 的代码中有判断对象是否存在的操作, 所以用 free 比用 destroy 安全。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询