【发布时间】:2013-10-04 18:58:27
【问题描述】:
我知道不加选择地使用全局变量是不明智的。但是,我需要使用一个 - TStringList。我的问题是如何(以及在哪里)释放它?已搜索,但找不到任何相关文档。
谢谢。
【问题讨论】:
-
完成后释放它。也许在最终确定块中。只有您知道所需的寿命。我最重要的提示是确保您在使用完之前不要释放它。当然,另一种解决方案可能根本不使用全局。
-
我尝试了以下代码,但它给了我错误;最后在定稿部分:
implementation {$R *.dfm} uses AnalysisOptions; var OutputFile: TStringList; initialization OutputFile := TStringList.Create; finalization OutPutFile.Free; end; procedure EstimateClick(Sender: TObject); begin // OutputFile.Add(...) end; ... procedure SaveClick(Sender: TObject); begin OutputFile.Save(...); end; -
称我为异端,但当您只在最终确定时释放它时,您不妨让它保持打开状态,因为无论如何程序关闭都会释放所有资源。 (是的,如果您也询问 FastMM4,它也会将其报告为泄漏,但实际上并非如此,只是 Windows 稍晚清理它,或者您稍早清理它)。如果你能早点做,那么清理很有用。
-
@Johan,
I'm a pedant即使你是对的 :-) -
@Johan:如果您要在关机时泄漏对象,请使用 FastMM 注册该对象,这样它就不会被报告为泄漏。
标签: delphi