Утечки памяти в Delphi
Сегодняшняя запись, в основном, для тех, кто недавно начал программировать в Delphi, т.к. "старики", в большинтве своем, знают о подобном инструменте.
Речь идет об уведомлениях об утечке памяти, при закрытии программы, появившейся в Delphi 2006 / Turbo Delphi. Это действительно очень полезная особенность, позволяющая обнаружить неожиданные, для программиста, утечки при выполнении.
Для того, чтобы разрешить Delphi выводить предупреждение, необходимо в файле проекта установить значение глобальной переменной в True:
ReportMemoryLeaksOnShutdown := DebugHook <> 0;
DebugHook необходим для того, чтобы сообщение, об утечках памяти, выводилось только тогда, когда приложение запускается из IDE.
После этого, при закрытии программы, если будут выявлены утечки памяти, будет показано окно, как на приведенном скриншоте. Да, информации выводится не много, но, в принципе, вполне достаточно, чтобы иметь представление, где именно происходит утечка памяти.
Для примера, добавьте в файл проекта приведенный выше код и в любом месте проекта сделайте примерно следующее:
var
sl : TStringList;
begin
sl := TStringList.Create;
sl.Add('Тут будет утечка памяти, т.к. объект sl не уничтожается.') ;
end;
+1