【发布时间】:2015-06-27 18:47:10
【问题描述】:
我有一个奇怪的问题,我似乎无法弄清楚。我有一个 MDI 子窗体,上面有一个 TListView 组件。在这个列表视图中,我添加了一些带有指向相关对象的数据属性的列表项。在 OnFormDestroy 事件中,我执行类似于以下的操作来清理这些对象:
Procedure TMDIChildForm1.FormDestroy(Sender: TObject);
Begin
For I := 0 To lvLabour.Items.Count - 1 Do
TLabourItem(lvLabour.Items[I].Data).Free;
lvLabour.Items.Clear;
End;
现在,如果我关闭表单本身但让应用程序保持打开状态,这可以正常工作。它将遍历每个项目以释放关联的对象。但是,如果我在没有先关闭 MDI 表单的情况下完全关闭应用程序,当它到达上面的代码时,项目计数为 0。这意味着在调用 FormDestroy 方法之前从列表中清除了项目。
因为只有在应用程序关闭时才会发生这种情况,所以没有内存泄漏。我只是将应用程序设置为在调试时显示内存泄漏,当我收到内存泄漏消息并且无法弄清楚原因时,它让我很恼火。
【问题讨论】:
标签: delphi memory-leaks