Minnelekkasjevarsling i Delphi ved programavslutning

Digital CPU for mennesker og datamaskiner

monsitj / Getty Images





Alle Delphi-versjoner siden Delphi 2006 har en oppdatert minnebehandling som er raskere og mer funksjonsrik.

En av de fineste funksjonene til den 'nye' minnebehandlingen lar programmer registrere (og avregistrere) forventede minnelekkasjer, og eventuelt rapportere uventede minnelekkasjer ved programavslutning.



Når du lager WIN32-applikasjoner med Delphi, er det viktig å sørge for at du frigjør alle objektene (minnet) du lager dynamisk.

En minnelekkasje (eller ressurs) oppstår når programmet mister evnen til å frigjøre minnet det bruker.



Rapporter minnelekkasjer ved avslutning

Oppdaging og rapportering av minnelekkasjer er satt til usann som standard. For å aktivere det, må du sette den globale variabelen ReportMemoryLeaksOnShutdown til TRUE.

Når applikasjonen er lukket, hvis det er uventede minnelekkasjer, vil applikasjonen vise dialogboksen 'Uventet minnelekkasje'.

Det beste stedet for ReportMemoryLeaksOnShutdown ville være i programmets kildekode (dpr) fil.

|_+_|

Merk: en global variabel DebugHook brukes ovenfor for å sikre at minnelekkasjer vises når applikasjonen kjøres i feilsøkingsmodus - når du tilpasser F9 fra Delphi IDE.



Testkjøring: Minnelekkasjedeteksjon

Etter å ha ReportMemoryLeaksOnShutdown satt til TRUE, legg til følgende kode i hovedskjemaets OnCreate-hendelsesbehandler.

|_+_|

Kjør programmet i feilsøkingsmodus, avslutt programmet - du skal se dialogboksen for minnelekkasje.



Merk: Hvis du leter etter et verktøy for å fange opp Delphi-applikasjonsfeil som minnekorrupsjon, minnelekkasjer, minneallokeringsfeil, variable initialiseringsfeil, variabeldefinisjonskonflikter, pekerfeil ... ta en titt pågale Bortsett fraog EurekaLog

Delphi Tips Navigator