En minnelekkasje er når et program fører til en inkrementell men jevn forbruk av minne , slik at programmet til å bruke mer minne enn den trenger. I beste programmet vil rett og slett bruke mer minne og tregere datamaskinen. Ekstreme tilfeller vil bruke nok minne til å forårsake andre programmer til å krasje på grunn av mangel på tilgjengelig minne , worst case scenario vil det krasje OS . I C + + , kan minne lekkasjer være forårsaket av flere forskjellige feil i kodingen . Følgende vil vise deg hvordan du kan sjekke for å se om programmet har en minnelekkasje og hvor du finner det. Instruksjoner
en
Finn ut om programmet har en minnelekkasje . Kjøre programmet gjennom debugger ved å skrive : en
' _CrtDumpMemoryLeaks () '
Første linje i koden vil lese " oppdaget minnelekkasjer ! " Hvis ikke, så programmet ikke har en minnelekkasje .
2
Track ned plasseringen av minnelekkasje . Den tredje linjen
' _CrtDumpMemoryLeaks ( ) '
brukes i utsagnet : en
' # define _CRTDBG_MAP_ALLOC '
vil fortelle deg navnet på fil der lekket minne ble tildelt. Du kan også bruke MFC å spore minnetildelinger . I MFC makroen : .
' Debug_new '
kan brukes til å spore minnelekkasjer
3
Gå til filen angitt. De dårlige koding vil måtte være plassert . Det er flere årsaker til en minnelekkasje , feil bruk av ny /slett , en feilplassert slett , "lost " pekere eller en pekeren går ut av omfanget . Kontroller linjer med kode der minnet er tildelt og rette eventuelle problemer . Sjekk om tildelte minnet i en sløyfe er utgitt i hver iterasjon . Sørg for at du pekere kan ikke gå ut av omfanget før minnet er utgitt . Sjekk også at kodene :
' malloc ' /' gratis '
'nye ' /' delete '
'nye [ ] ' /delete [ ] '
brukes riktig
4
Kjør programmet gjennom debugger igjen ved å skrive .
' _CrtDumpMemoryLeaks () '
å se om problemet fremdeles forekommer.