A differenza dei più recenti linguaggi di programmazione quali Java e Python, linguaggi di programmazione come C richiedono al programmatore di gestire la propria memoria. C fornisce strutture per richiedere memoria libera e tornare al sistema operativo, ma niente di più. Poiché i linguaggi come il C non offrono nessun meccanismo di garbage collection per pulire gli oggetti che non sono più in uso, il programmatore deve essere vigile e rimuovere gli oggetti quando non sono più necessari. Se un programma non sbarazzarsi dei suoi oggetti inutilizzati, la perdita di memoria risultante può causare il blocco del sistema operativo.
Istruzioni
1
Installare la suite di debug "valgrind".
Il pacchetto di valgrind è liberamente disponibile su tutte le distribuzioni Linux. Per installarlo su distribuzioni derivate da Debian come Ubuntu, digitare "sudo apt-get install valgrind." Su RedHat o Fedora, digitare "sudo yum install valgrind."
2
Compila il programma con simboli di debug.
Il compilatore più comune per i programmi C su sistemi Linux è gcc. Uso il "-g" bandiera per indicare a gcc per includere i simboli di debug nel binario che crea. (Simboli di debug sono necessari per i debugger come valgrind per riferirsi a problemi specifici nel codice).
Se si dispone di un programma C denominato "memoryhog.c." per esempio, volete, compilate utilizzando questo comando: gcc -g memoryhog.c
3
Eseguire che il programma del binario attraverso valgrind.
A meno che non si dice altrimenti, gcc sarà il nome tuo programma "a. out." Per eseguire il tuo binario denominato "out" utilizzando valgrind, digitare questo comando: valgrind - controllare le perdite = pieno - Visualizza-raggiungibile = yes. /a.out
4
Esaminare l'output di valgrind.
Se tutti la memoria delle perdite sono stati risolti, valgrind segnala "heap tutti i blocchi sono stati liberati..--perdite non sono possibile".
Se eventuali perdite di memoria sono presenti, valgrind elenca il numero di riga in cui viene creata la perdita.
Consigli & Avvertenze
- Se siete disposti a installare ganci memoria di debug nel codice, quindi utilità mtrace può fornire funzionalità simili a valgrind.
- Perdite di memoria costituiscono solo una classe di bug di programmazione. Il codice può essere libero di perdite di memoria mentre ancora soffre di problemi di prestazioni o vulnerabilità di sicurezza.