【发布时间】:2012-02-18 11:35:03
【问题描述】:
我的应用程序产生了几个独立的表单。一旦创建应用程序就会忘记它们。所有动作都以该形式本身处理。当应用程序关闭时,表格也会关闭,我想是 RTS。这很好,除了 OnClose 和 OnDestroy 事件都没有被触发,因此会发生内存泄漏。我可以管理存在哪些表格(就像我现在所做的那样),但实际上应用程序必须完全忘记这些表格。
有没有办法在不是应用程序主窗体的窗体内部检测应用程序是否正在关闭?
【问题讨论】:
-
即使没有调用表单的 dtor(例如代码调用 'halt' 或 ExitProcess()),如果应用程序终止也不应该有内存泄漏 - 操作系统会吃光表格,如果没有其他事情。除此之外,您必须非常努力地不让 Destroy 被调用 - 应用程序保留一个表单列表并在应用程序关闭时将它们全部销毁。
-
@Martin,你不必努力,只是健忘。我使用
nil作为Create的参数创建了表单。大卫的回答提醒我这不是一个好主意:-)