■メモリリークを報告する「ReportMemoryLeaksOnShutdownプロパティ」
Delphiには、アプリケーション終了時にメモリリークを報告するReportMemoryLeaksOnShutdownプロパティがあります。
program Project1;
uses
ExceptionLog,
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
ReportMemoryLeaksOnShutdown := True; //<=追加
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
ただ、ReportMemoryLeaksOnShutdownプロパティではメモリリークがあったことがわかるだけで、どこに原因があるのかまではわかりません。
■メモリリークの発生場所までわかる「EurekaLog」
EurekaLogを使用すると、メモリリークの原因まで検出することができます。
EurekaLogでメモリリークを検出するには、設定画面の「Catch Memory Leaks」チェックボックスにチェックを入れます。
メモリリークのあるアプリケーションを終了すると、次のようなダイアログが表示されます。
「click here」のリンクをクリックすると、詳細なエラー情報を表示する画面が表示されます。
「Call Stack」タブを選択すると、メモリリークの発生場所がわかります。
メモリリークの発生場所をダブルクリックすると、IDEの該当行にフォーカスが移動します。
このようにEurekaLogを使うと問題の箇所がすぐにわかり、修正することができます。