Benachrichtigung über Speicherlecks in Delphi beim Beenden des Programms
monsitj/Getty Images
Alle Delphi-Versionen seit Delphi 2006 haben einen aktualisierten Speichermanager, der schneller und funktionsreicher ist.
Eines der nettesten Features des „neuen“ Speichermanagers ermöglicht es Anwendungen, erwartete Speicherlecks zu registrieren (und abzumelden) und optional unerwartete Speicherlecks beim Herunterfahren des Programms zu melden.
Beim Erstellen von WIN32-Anwendungen mit Delphi müssen Sie unbedingt sicherstellen, dass Sie alle dynamisch erstellten Objekte (Speicher) freigeben.
Ein Speicher- (oder Ressourcen-) Leck tritt auf, wenn das Programm die Fähigkeit verliert, den verbrauchten Speicher freizugeben.
Melden Sie Speicherlecks beim Herunterfahren
Die Erkennung und Meldung von Speicherlecks ist standardmäßig auf „false“ gesetzt. Um es 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 wäre in der Quellcode des Programms (dpr) Datei.
|_+_|Hinweis: Oben wird eine globale Variable DebugHook verwendet, um sicherzustellen, dass Speicherlecks angezeigt werden, wenn die Anwendung im Debug-Modus ausgeführt wird – wenn Sie F9 aus der Delphi-IDE einfügen.
Testlauf: Erkennung von Speicherlecks
Wenn ReportMemoryLeaksOnShutdown auf TRUE gesetzt ist, fügen Sie den folgenden Code in den OnCreate-Ereignishandler des Hauptformulars ein.
|_+_|Führen Sie die Anwendung im Debug-Modus aus, beenden Sie die Anwendung – Sie sollten das Dialogfeld „Speicherverlust“ sehen.
Hinweis: Wenn Sie nach einem Tool suchen, mit dem Sie Ihre Delphi-Anwendungsfehler wie Speicherbeschädigung, Speicherlecks, Speicherzuordnungsfehler, Variableninitialisierungsfehler, Variablendefinitionskonflikte, Zeigerfehler ... abfangen können, schauen Sie sich anverrücktAußerund EurekaLog
Delphi-Tipps-Navigator
- SQL-Abfragen für Datum und Uhrzeit: Formatieren von Datums- und Uhrzeitwerten für Access SQL in Delphi
- Erzwingen Sie den Bearbeitungsmodus von TListView mit einem Tastaturkürzel