Проблема: Проверить существование в программе утечек памяти (Memory leek).
Решение: Для решения даной задачи можно воспользоваться различными инструментариями/компонентами. Приведу некоторые из них:
- EurekaLog
- FastMM
- AQTime
- SafeMM
Конечно можно установить или подключить той или иной компонет к проекту и воспользоваться всеми возможностями, которые поставляются. Но, бываю ситуации когда нужно оперативно определить есть утечка паияти или нет, при этом ничего не настраивая или устанавливая. В таком случае нужно установить глобальную переменную ReportMemoryLeaksOnShutdown := True;. По умолчанию данный параметр выключен. При закрытии приложения, если есть утечки памяти, появится окно с сообщением что «течет», и в каком количестве. (Рис. 1):
Использование: Я бы рекомендовал установить параметр ReportMemoryLeaksOnShutdown в исходном коде проекта (dpr файле) .
Для этого нужно в «Project Manager’е» кликнуть правой кнопкой мыши на проект и выбрать пункт «View Source«, после чего должен открыться редактор кода примерно следующего вида (см. ниже). В секции begin..end устанавливаем парамет ReportMemoryLeaksOnShutdown := true:
program FreeObject;
uses
...
{$R *.res}
begin
//Для отображения утечек памяти, если они есть
ReportMemoryLeaksOnShutdown := true;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end.
Если в вашем приложении есть утечки памяти, они отображаться при закрытии программы. Отображаться только в том случае если вы работали с какими то классами, которые не были удалены после использования.
Диагностику утечек памяти я применил при написании статьи: TStrings и освобождение объектов, исходники проекта лежат тут