VCL 中的一个内存泄漏 Bug

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

在valedit.pas中,TValueListStrings类没有实现虚拟的Destroy方法,

它实现了虚拟的Clear方法, 但是它的父类TStringList的

Destroy中并不通过调用Clear()来释放资源,因此TValueListStrings

中为成员ItemProps分配的内存就丢失了.

所以如果在Form中添加了TValueListEditor控件,并且在代码中

使用了其ItemProperty成员(因为它是延迟分配,只有第一次使用时才分配内存),

则需要在Form.Destroy()方法中显式的调用Clear()方法,如下:

MyForm.Destroy()

{

...

MyValueListEditor->Strings->Clear();

...

}

这是在C++ Builder 6的VCL Source中发现的, 估计 Delphi 6中

也应该有这个Bug.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航