Geheugenlekmelding in Delphi bij afsluiten van programma

Digitale mens en computer CPU

monsitj / Getty Images





Alle Delphi-versies sinds Delphi 2006 hebben een bijgewerkt geheugenbeheerprogramma dat sneller is en meer functies biedt.

Een van de leukste eigenschappen van de 'nieuwe' geheugenbeheerder stelt applicaties in staat om verwachte geheugenlekken te registreren (en uit te schrijven) en optioneel onverwachte geheugenlekken te melden bij het afsluiten van het programma.



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

Een geheugenlek (of bronlek) treedt op wanneer het programma de mogelijkheid verliest om het verbruikte geheugen vrij te maken.



Geheugenlekken melden bij afsluiten

Detectie en rapportage van geheugenlekken zijn standaard ingesteld op onwaar. Om dit in te schakelen, moet u de globale variabele ReportMemoryLeaksOnShutdown instellen op TRUE.

Als de applicatie is gesloten en er onverwachte geheugenlekken zijn, geeft de applicatie het dialoogvenster 'Onverwacht geheugenlek' weer.

De beste plaats voor de ReportMemoryLeaksOnShutdown zou zijn in de broncode programma (dpr) het dossier.

|__+_|

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



Testrit: geheugenlekdetectie

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

|__+_|

Voer de toepassing uit in de foutopsporingsmodus, sluit de toepassing af - u zou het dialoogvenster voor geheugenlek moeten zien.



Opmerking: als u op zoek bent naar een hulpmiddel om uw Delphi-toepassingsfouten op te vangen, zoals geheugenbeschadiging, geheugenlekken, geheugentoewijzingsfouten, initialisatiefouten van variabelen, variabelendefinitieconflicten, aanwijzerfouten ... neem een ​​kijkje opgekBehalveen EurekaLog

Delphi Tips Navigator