Geheugenlekmelding in Delphi bij afsluiten van programma

Alle Delphi-versies sinds Delphi 2006 hebben een bijgewerkte geheugenbeheerder die sneller en rijker is aan functies.

Een van de leukste functies van de "nieuwe" geheugenbeheerder stelt toepassingen in staat verwachte geheugenlekken te registreren (en de registratie ongedaan te maken) en optioneel onverwachte geheugenlekken te melden bij het afsluiten van het programma.

Bij het maken van WIN32-applicaties met Delphi is het noodzakelijk om ervoor te zorgen dat u alle objecten (geheugen) vrijmaakt die u dynamisch maakt.

Een geheugenlek (of bron) treedt op wanneer het programma de mogelijkheid verliest om het geheugen vrij te maken dat het verbruikt.

Geheugenlekken melden bij afsluiten

Geheugenlekdetectie en -rapportage zijn standaard ingesteld op false. Om dit in te schakelen, moet u de globale variabele ReportMemoryLeaksOnShutdown instellen op TRUE.

Wanneer de toepassing wordt gesloten en er zich onverwachte geheugenlekken voordoen, geeft de toepassing het dialoogvenster "Onverwacht geheugenlek" weer.

De beste plaats voor ReportMemoryLeaksOnShutdown is in het broncode-bestand (dpr) van het programma.

 beginnen   ReportMemoryLeaksOnShutdown: = DebugHook 0;   // source "door" Delphi   Application.Initialize; Application.MainFormOnTaskbar: = True; Application.CreateForm (TMainForm, MainForm); Application.Run; einde. 

Opmerking: hierboven wordt een globale variabele DebugHook gebruikt om ervoor te zorgen dat geheugenlekken worden weergegeven wanneer de toepassing in de foutopsporingsmodus wordt uitgevoerd - wanneer u F9 uit de Delphi IDE past.

Testrit: geheugenlekdetectie

Nadat ReportMemoryLeaksOnShutdown is ingesteld op TRUE, voegt u de volgende code toe in de OnCreate-gebeurtenishandler van het hoofdformulier.

 var   sl: TStringList; beginnen   sl: = TStringList.Create; sl.Add ('Geheugenlek!'); einde; 

Start de toepassing in de foutopsporingsmodus, sluit de toepassing - u zou het dialoogvenster voor geheugenlekken moeten zien.

Opmerking: als u op zoek bent naar een hulpmiddel om fouten in uw Delphi-toepassing op te vangen, zoals geheugenbeschadiging, geheugenlekken, geheugenallocatiefouten, variabele initialisatiefouten, variabele definitieconflicten, aanwijzerfouten ... neem een ​​kijkje op madExcept en EurekaLog

Delphi Tips Navigator

  • Datum Tijd SQL-query's: Datumtijdwaarden opmaken voor Access SQL in Delphi
  • Forceer de bewerkingsmodus van TListView met een sneltoets