Cuando quiero hacer la prueba del valgrind para cada una de las funciones del obligatorio2.c surge un problema. Al agregar el valgrind el número de argumentos es más de 5 y por lo tanto la función devuelve error, como debería. Entonces, como puedo probar el valgrind para cada caso?
El valgrind no modifica el comportamiento del programa.
A modo de ejemplo, si querés testear el siguiente programa (que tiene 4 parámetros) :
./obligatorio2 4 img.pgm img_out.pgm B
Al usar el valgrind deberías correr:
valgrind --leak-check=full ./obligatorio2 4 img.pgm img_out.pgm B
En ambos casos el programa C recibe los mismos 4 parámetros.
A modo de ejemplo, si querés testear el siguiente programa (que tiene 4 parámetros) :
./obligatorio2 4 img.pgm img_out.pgm B
Al usar el valgrind deberías correr:
valgrind --leak-check=full ./obligatorio2 4 img.pgm img_out.pgm B
En ambos casos el programa C recibe los mismos 4 parámetros.
Buenas, no me queda muy claro como funciona el valgrind. Cuando corro el comando que pusiste ahí me aparece durante el proceso "invalid write of size 1" un par de veces, pero al parecer provienen de algo interno a la función fscanf. Cuando termina de correr el valgrind indica "All heap blocks were freed -- no leaks are possible". ¿Esto significa que está bien o hay algo que deba corregir?
¡Desde ya muchas gracias!
¡Desde ya muchas gracias!
Esto se debe probablemente a que los parámetros que le estás pasando al fscanf no son los adecuados. Por ejemplo un error común seria si usas:
fscanf(fp, "%d", &x) y x no es de tipo int.
fscanf(fp, "%d", &x) y x no es de tipo int.