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

Come trovare una perdita di memoria in Linux

A differenza dei linguaggi di programmazione più recenti come Java e Python , linguaggi di programmazione come C richiedono al programmatore di gestire la propria memoria. C fornisce servizi a richiesta di memoria libera e tornare al sistema operativo , ma niente di più . Perché linguaggi come C offrono alcun meccanismo di garbage collection per pulire gli oggetti che non sono più in uso , il programmatore deve essere vigile e rimuovere oggetti quando non sono più necessari . Se un programma non si libera dei suoi oggetti inutilizzati , la perdita di memoria risultante può causare il crash del sistema operativo . Istruzioni
1

installare la suite di debug " valgrind " .

Il pacchetto valgrind è liberamente disponibile su tutte le distribuzioni Linux . Per installarlo sulle distribuzioni derivate da Debian come Ubuntu , digitare "sudo apt- get install valgrind . " Su RedHat o Fedora , digitare " sudo yum install valgrind . "
2

compilare il programma con i simboli di debug .

Il compilatore più comune per programmi C su sistemi Linux è gcc . Utilizzare il flag " - g" per istruire gcc per includere simboli di debug nel binario che esso crea . ( Simboli di debug sono necessari per il debugger come valgrind per riferirsi a problemi specifici nel codice ) .

Se si dispone di un programma C denominato " memoryhog.c . " per esempio , si potrebbe compilarlo con questo comando : gcc- g memoryhog.c
3

Run binaria del programma attraverso valgrind

A meno che non gli si dice altrimenti , gcc . sarà il nome tuo " a.out ". programma Per eseguire il binario chiamato " a.out " utilizzando valgrind , digitare questo comando : . Valgrind - leak- check = pieno - show- raggiungibile = yes /a.out
4

Ispezionare l'output di valgrind

Se sono stati risolti tutti i problemi di memoria , i rapporti valgrind " Tutti i blocchi di heap sono stati liberati - . perdite sono possibili " .

eventuali perdite di memoria sono presenti, valgrind elenca il numero di linea su cui viene creata la perdita.

 

Programmazione © www.354353.com