我正在虚拟模式下使用TListView
(OwnerData
设置为true
),这很简单。 TListView
的视图风格为vsReport
,并使用主要的标题和子项。 OnData
的事件代码很简单(代码是C ++ Builder,但是如果使用Delphi,您会发现的):
void __fastcall TForm1::ListView1Data(TObject *Sender, TListItem *Item)
{
Item->Caption = MyList[Item->Index].Name;
Item->SubItems->Add(MyList[Item->Index].Status);
}
到目前为止一切都很好,但是我对SubItems->Add
感到困惑-是内存泄漏以连续添加子项(同样适用于字幕)吗?
我应该在另一个事件中释放内存吗(我还没有找到)?
答案 0 :(得分:3)
不,这不是内存泄漏。框架分配了SubItems
对象,并在使用完该对象后将其取消分配。
答案 1 :(得分:3)
不。在内部,TListView
在虚拟模式下运行时维护单个物理TListItem
对象。每当需要触发OnData
事件时,它就会重用并清除该对象。您无需手动释放任何TListItem
数据。