Memory Leak Notification in Delphi on Program Exit

Alla Delphi-versioner sedan Delphi 2006 har en uppdaterad minneshanterare som är snabbare och mer funktionsrik.

En av de trevligaste funktionerna i den "nya" minneshanteraren gör att applikationer kan registrera (och avregistrera) förväntade minnesläckor och eventuellt rapportera oväntade minnesläckor vid programstängning.

När du skapar WIN32-applikationer med Delphi är det viktigt att se till att du frigör alla objekt (minne) du skapar dynamiskt.

Ett minne (eller resurs) läcker uppstår när programmet tappar förmågan att frigöra minnet det förbrukar.

Rapportera minnesläckor vid avstängning

Minnesläckagedetektering och rapportering är som standard inställd på falsk. För att aktivera det måste du ställa den globala variabeln ReportMemoryLeaksOnShutdown till SANT.

När applikationen är stängd, om det finns oväntade minnesläckor, kommer applikationen att visa dialogrutan "Oväntat minnesläcka".

Det bästa stället för ReportMemoryLeaksOnShutdown skulle vara i programmets källkod (dpr) -fil.

 Börja   ReportMemoryLeaksOnShutdown: = DebugHook 0;   // källa "av" Delphi   Application.Initialize; Application.MainFormOnTaskbar: = True; Application.CreateForm (TMainForm, MainForm); Application.Run; slutet. 

Obs: en global variabel DebugHook används ovan för att se till att minnesläckor visas när applikationen körs i felsökningsläge - när du passar F9 från Delphi IDE.

Test Drive: Memory Leak Detection

När ReportMemoryLeaksOnShutdown är satt till TRUE, lägg till följande kod i huvudformens OnCreate-händelsehanterare.

 var   sl: TStringList; Börja   sl: = TStringList.Create; sl.Tillfoga ('Memory läcka!'); slutet; 

Kör applikationen i felsökningsläge, avsluta applikationen - du bör se dialogrutan för minnesläckage.

Obs! Om du letar efter ett verktyg för att fånga dina Delphi-applikationsfel som minneskorruption, minnesläckor, minnesallokeringsfel, variabel initialiseringsfel, variabla definitionskonflikter, pekfel ... titta på madExcept och EurekaLog

Delphi Tips Navigator

  • Date Time SQL Queries: Formatera Date Time Värden för Access SQL i Delphi
  • Tvinga TListViews redigeringsläge med hjälp av en kortkommando