程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> VCL中的一個內存洩漏Bug

VCL中的一個內存洩漏Bug

編輯:Delphi

在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.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved