Speicherleck-Benachrichtigung in Delphi beim Beenden des Programms

Alle Delphi-Versionen seit Delphi 2006 verfügen über einen aktualisierten Speichermanager, der schneller und funktionsreicher ist.

Eine der nettesten Funktionen des "neuen" Speichermanagers ermöglicht es Anwendungen, erwartete Speicherverluste zu registrieren (und die Registrierung aufzuheben) und optional unerwartete Speicherverluste beim Herunterfahren des Programms zu melden.

Wenn Sie WIN32-Anwendungen mit Delphi erstellen, müssen Sie unbedingt sicherstellen, dass Sie alle Objekte (Speicher), die Sie dynamisch erstellen, freigeben.

Ein Speicherverlust (oder ein Ressourcenverlust) tritt auf, wenn das Programm die Fähigkeit verliert, den verbrauchten Speicher freizugeben.

Speicherverluste beim Herunterfahren melden

Das Erkennen und Melden von Speicherverlusten ist standardmäßig auf false eingestellt. Um dies zu aktivieren, müssen Sie die globale Variable ReportMemoryLeaksOnShutdown auf TRUE setzen.

Wenn die Anwendung geschlossen wird und unerwartete Speicherverluste auftreten, zeigt die Anwendung das Dialogfeld "Unerwarteter Speicherverlust" an.

Der beste Ort für den ReportMemoryLeaksOnShutdown ist die Quellcode-Datei (dpr) des Programms.

 Start   ReportMemoryLeaksOnShutdown: = DebugHook 0;   // source "by" Delphi   Application.Initialize; Application.MainFormOnTaskbar: = True; Application.CreateForm (TMainForm, MainForm); Application.Run; Ende. 

Hinweis: Eine globale Variable DebugHook wird oben verwendet, um sicherzustellen, dass Speicherverluste angezeigt werden, wenn die Anwendung im Debug-Modus ausgeführt wird - wenn Sie F9 aus der Delphi-IDE anpassen.

Probefahrt: Speicherleckerkennung

Wenn ReportMemoryLeaksOnShutdown auf TRUE gesetzt ist, fügen Sie den folgenden Code in die OnCreate-Ereignisbehandlungsroutine des Hauptformulars ein.

 var   sl: TStringList; Start   sl: = TStringList.Create; sl.Add ('Memory leak!'); Ende; 

Führen Sie die Anwendung im Debug-Modus aus und beenden Sie sie. Das Dialogfeld "Speicherverlust" sollte angezeigt werden.

Hinweis: Wenn Sie nach einem Tool suchen, mit dem Sie Ihre Delphi-Anwendungsfehler abfangen können, z. B. Speicherbeschädigung, Speicherlecks, Speicherzuordnungsfehler, Variableninitialisierungsfehler, Variablendefinitionskonflikte, Zeigerfehler usw. Schauen Sie sich madExcept und EurekaLog an

Delphi Tips Navigator

  • Date Time SQL-Abfragen: Formatieren von Datums- und Uhrzeitwerten für Access SQL in Delphi
  • Erzwingen Sie den Bearbeitungsmodus von TListView mithilfe einer Tastenkombination