【问题标题】:Is TListView OwnerData OnData event leaking memory?TListView OwnerData OnData 事件是否泄漏内存?
【发布时间】:2019-06-12 18:01:36
【问题描述】:

我在虚拟模式下使用TListViewOwnerData 设置为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 感到困惑 - 是否存在内存泄漏以连续添加这样的子项(也适用于 Caption)?

我应该在另一个事件(我还没有找到)中释放内存吗?

【问题讨论】:

标签: listview delphi c++builder tlistview


【解决方案1】:

没有。在内部,TListView 在虚拟模式下运行时维护单个物理TListItem 对象。只要需要触发OnData 事件,它就会重用并清除该对象。您无需手动释放任何TListItem 数据。

【讨论】:

    【解决方案2】:

    不,这不是内存泄漏。框架分配了SubItems 对象,并在使用完毕后释放它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-13
      • 2020-07-22
      • 2010-10-13
      • 2019-01-28
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      相关资源
      最近更新 更多