Delphi відображення витоку пам'яті

Проблема. Перевірити існування в програмі витоків пам'яті (Memory leek).
Рішення: Для вирішення даної задачі можна скористатися різними інструментами / компонентами. Наведу деякі з них:

Звичайно можна встановити або підключити тій чи іншій компонент до проекту і скористатися всіма можливостями, які поставляються. Але, буваю ситуації коли потрібно оперативно визначити є витік паіяті чи ні, при цьому нічого не налаштовуючи або встановлюючи. У такому випадку потрібно встановити глобальну змінну ReportMemoryLeaksOnShutdown: = True ;. За замовчуванням цей параметр вимкнений. При закритті програми, якщо є витік пам'яті, з'явиться вікно з повідомленням що «тече», і в якій кількості. (Рис. 1):

Мал. 1 Витік пам'яті

uses
.

begin
// Для відображення витоків пам'яті, якщо вони є
ReportMemoryLeaksOnShutdown. = True;

Application. Initialize;
Application. MainFormOnTaskbar. = True;
Application. CreateForm # 40; TMainForm. MainForm # 41; ;
Application. Run;
end.

Якщо у вашому додатку є витоку пам'яті, вони відображатися при закритті програми. Відображатися тільки в тому випадку якщо ви працювали з якимись класами, які не були видалені після використання.

Діагностику витоків пам'яті я застосував при написанні статті: TStrings і звільнення об'єктів. исходники проекту лежать тут

Схожі теми:

Схожі статті