Recientemente desarrollé el hábito de ejecutar todos mis programas a través de valgrind
para verificar si hay pérdidas de memoria, pero la mayoría de sus resultados han sido un poco crípticos para mí.Errores de valgrind a pesar de que se liberaron todos los bloques de montón
Por mi última ejecución, valgrind -v
me dio:
All heap blocks were freed -- no leaks are possible
Eso significa cubierto de mi programa de pérdidas de memoria, ¿verdad?
¿Qué significa este error? ¿Mi programa no lee ciertos bloques de memoria correctamente?
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 14 from 9)
1 errors in context 1 of 1:
Invalid read of size 4
at 0x804885B: findPos (in /home/a.out)
by 0xADD918: start_thread (pthread_create.c:301)
by 0xA26CCD: clone (clone.S:133)
Address 0x4a27108 is 0 bytes after a block of size 40 alloc'd
at 0x4005BDC: malloc (vg_replace_malloc.c:195)
by 0x804892F: readInput (in /home/a.out)
by 0xADD918: start_thread (pthread_create.c:301)
by 0xA26CCD: clone (clone.S:133)
used_suppression: 14 dl-hack3-cond-1
Además, ¿qué son los llamados "errores suprimidos" aquí?
Este es uno de los errores suprimidos, simplemente me dio "1 error suprimido" cuando usé valgrind sin -v. Entonces, no es mi dolor de cabeza, ¿verdad? –
@crypto: ¿te refieres al error en 'findPos'? No, este es real, este es tu código que está haciendo algo mal. Sin el código en sí solo puedo adivinar, pero a partir del nombre de la función supongo que esto escanea una matriz y va más allá del límite asignado en algún caso de frontera. Compile con '-g' y valgrind le dirá la línea exacta. –
Pero la ubicación final del error se establece como clone.S, sobre el cual no tengo control. –