Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> C /C + + Programming >> .

Come eseguire il debug di una perdita di memoria in C + +

Una perdita di memoria è quando un programma causa un consumo incrementale ma costante di memoria , causando il programma da utilizzare più memoria di cui ha bisogno . Nella migliore delle ipotesi il programma sarà sufficiente utilizzare più memoria e rallentare il computer . Casi estremi useranno memoria sufficiente per causare altri programmi di crash a causa di mancanza di memoria disponibile , peggiore delle ipotesi andrà in crash il sistema operativo . In C + + , perdite di memoria possono essere causati da diversi errori diversi nella codifica. Di seguito vi mostrerà come controllare per vedere se il programma dispone di una perdita di memoria e dove trovarlo . Istruzioni
1

Scopri se il tuo programma ha una perdita di memoria . Eseguire il programma attraverso il debugger digitando: ' _CrtDumpMemoryLeaks ()'


La prima riga di codice vengono visualizzati come " perdite di memoria rilevato! " Se no , allora il programma non ha una perdita di memoria .
2

rintracciare la posizione della perdita di memoria . La terza linea di

' _CrtDumpMemoryLeaks ( ) '

usato con l'affermazione :

' # define _CRTDBG_MAP_ALLOC '

vi dirà il nome della file in cui è stato allocato l' memoria persa . È inoltre possibile utilizzare MFC per monitorare le allocazioni di memoria . In MFC la macro : .

' DEBUG_NEW '

può essere utilizzato per monitorare le perdite di memoria
3

Vai al file indicato . La codifica difettosi dovranno essere collocato . Ci sono diverse cause di una perdita di memoria ; utilizzo sbagliato di nuovo /delete , un'eliminazione fuori luogo , puntatori " perso" o un puntatore esce dallo scope . Controllare le linee di codice in cui è allocata la memoria e correggere eventuali problemi . Verificare se la memoria allocata in un loop viene rilasciato in ogni iterazione . Assicurati di puntatori non possono andare fuori del campo di applicazione prima che la memoria viene rilasciata . Controllare anche che i codici :

' malloc ' /' libero'

'nuovo' /' delete '

' new [] ' /delete [ ] '

sono usati correttamente
4

eseguire il programma tramite il debugger di nuovo digitando: . ' _CrtDumpMemoryLeaks ()'


per vedere se il problema si verifica ancora .

 

Programmazione © www.354353.com