在DELPHI中Parent对象也如Owner属性一样,可以释放它的子控件。在网上摘录另一篇文章如下:
今天一直在考虑是否有一个内存泄漏的问题,看一下Delphi的源码。
结果竟然发现控件的Parent能够释放它的子控件,一直以为只有控件的AOwner才能释放,汗!!!!
现在总结如下:
情况1:直接从TComponent继承下来的组件,将由它的AOwner释放(如果你不自己释放,下来的情况也一样)
情况2: 如果控件是从TControl继承下来的,你设定了他的Parent,当这个Parent释放时,它会释放掉所有的子控件。
情况3:当最后AOwner释放它的Components时,从最后一个组件开始删除,这里这个组件也会删除它内部的Comonents,如果组件是TWinControl,则它会释放掉它所有的子控件。所以说,Aowner只是负责释放所有的不可视组件,和一部分的可视控件,大部分可视控件还是由Parent来释放的。
本文探讨了DELPHI中控件的释放机制,包括AOwner与Parent在控件释放过程中的作用。总结了不同情况下控件如何被正确释放,避免内存泄漏。
1055

被折叠的 条评论
为什么被折叠?



