En minnesläcka är när ett program orsakar en stegvis men stadig konsumtion av minnet , vilket gör att programmet för att använda mer minne än den behöver . I bästa programmet kommer helt enkelt använda mer minne och datorn långsam . Extrema fall kommer att använda tillräckligt med minne för att orsaka andra program att krascha på grund av brist på tillgängligt minne , värsta fall kommer det att krascha ditt OS . I C + + , kan minnesläckor kan orsakas av flera olika fel i kodning . Följande kommer att visa dig hur du kontrollerar att se om ditt program har en minnesläcka och var den finns . Instruktioner
1
Ta reda på om ditt program har en minnesläcka . Kör programmet genom debugger genom att skriva:
" _CrtDumpMemoryLeaks ( )
Den första raden i koden kommer att läsa " Upptäckta Minnesläckor ! " Om inte , då programmet inte har en minnesläcka .
2
spåra placeringen av minnesläcka . Den tredje raden i
" _CrtDumpMemoryLeaks ( ) '
används med uttalandet :
" # define _CRTDBG_MAP_ALLOC '
kommer att berätta namnet på den filen där läckt minne tilldelades . Du kan också använda MFC att spåra minnesallokeringar . I MFC makrot : .
' Debug_new '
kan användas för att spåra minnesläckor
3
Gå till filen anges . De dåliga kodning måste lokaliseras . Det finns flera orsaker till en minnesläcka , felaktig användning av ny /delete , en felplacerad delete , "Lost" pekare eller en pekare går ur räckvidd . Kontrollera kodrader där minne allokeras och åtgärda eventuella problem . Kontrollera om tilldelade minnet i en slinga släpps i varje iteration . Se till att du pekare inte kan gå ut ur räckvidd innan minnet frigörs . Kontrollera också att koderna :
" malloc " /"fri"
' ny ' /' delete '
" nya [ ] ' /delete [ ] '
används korrekt
4
Kör programmet genom debugger igen genom att skriva: .
" _CrtDumpMemoryLeaks ( )
att se om problemet kvarstår .