Computerwissenschaften

Benachrichtigung über Speicherlecks 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 schönsten Funktionen des „neuen“ Speichermanagers ermöglicht es Anwendungen, erwartete Speicherlecks zu registrieren (und die Registrierung aufzuheben) und optional unerwartete Speicherlecks beim Herunterfahren des Programms zu melden.

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

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

 

Beim Herunterfahren Speicherlecks melden

Die Erkennung und Berichterstellung 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 Speicherlecks auftreten, zeigt die Anwendung das Dialogfeld „Unerwarteter Speicherverlust“ an.

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

 beginReportMemoryLeaksOnShutdown := DebugHook <> 0;//source "by" DelphiApplication.Initialize;Application.MainFormOnTaskbar := True;Application.CreateForm(TMainForm, MainForm) ;Application.Run;
end.

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

 

Probefahrt: Speicherlecksuche

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

 varsl : TStringList;
beginsl := TStringList.Create;sl.Add('Memory leak!') ;
end;

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

Hinweis: Wenn Sie nach einem Tool suchen, mit dem Sie Ihre Delphi-Anwendungsfehler wie Speicherbeschädigung, Speicherlecks, Speicherzuordnungsfehler, Variableninitialisierungsfehler, Variablendefinitionskonflikte, Zeigerfehlerabfangen können, schauen Sie sich madExcept und EurekaLog an

 

Delphi Tips Navigator

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.