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.
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.
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