Detectar fuites de memòria

Aprèn Valgrind per a memory leaks pas a pas

Utilitza aquesta guia per entendre com Valgrind i Memcheck detecten fuites, lectures invàlides i mal ús de memòria en programes C i C++.

1 Llegeix resums de fuites sense perdre't
2 Rastreja assignacions fins al camí exacte del codi
3 Diferencia fuites, invalid reads i invalid frees

Flux per depurar fuites

Obrir guia de Valgrind

01

Compila per depurar

Compila amb símbols de depuració perquè Valgrind mostri referències útils de fitxer i línia.

02

Executa Memcheck

Llança el programa amb detecció de fuites i revisa les traces de crides reportades.

03

Corregeix i verifica

Elimina la fuita o l'accés invàlid i torna a executar Valgrind per confirmar que l'informe desapareix.

01

Llegeix resums de fuites sense perdre't

02

Rastreja assignacions fins al camí exacte del codi

03

Diferencia fuites, invalid reads i invalid frees

Detectar fuites de memòria

Flux per depurar fuites

01
1

Compila per depurar

Compila amb símbols de depuració perquè Valgrind mostri referències útils de fitxer i línia.

02
2

Executa Memcheck

Llança el programa amb detecció de fuites i revisa les traces de crides reportades.

03
3

Corregeix i verifica

Elimina la fuita o l'accés invàlid i torna a executar Valgrind per confirmar que l'informe desapareix.

FAQ sobre Valgrind i memory leaks

Necessito símbols de depuració per a Valgrind?
Pots usar Valgrind sense ells, però compilar amb -g fa que els informes siguin molt més fàcils d'entendre.
Quina diferència hi ha entre definitely lost i still reachable?
Definitely lost significa que el programa ha perdut memòria sense conservar cap punter. Still reachable pot continuar assignada en sortir del programa i no sempre indica un bug real.
Valgrind també ajuda amb invalid reads?
Sí. Memcheck pot reportar invalid reads, invalid writes, double free i altres usos incorrectes de memòria a més de fuites.
Com trobo fuites de memòria pas a pas amb Valgrind?
Compila amb -g, executa valgrind --leak-check=full ./el_teu_programa i revisa l'informe buscant 'definitely lost' o 'indirectly lost'. Segueix la traça fins al punt d'assignació.