Duplicar posible:
Does free(ptr) where ptr is NULL corrupt memory?¿Es una buena práctica liberar un puntero NULL en C?
estoy escribiendo una función C que libera un puntero si era malloc()
ed. El puntero puede ser NULL (en el caso de que se haya producido un error y el código no haya podido asignar nada) o asignado con malloc()
. ¿Es seguro usar free(ptr);
en lugar de if (ptr != NULL) free(ptr);
?
gcc
no se queja en absoluto, incluso con -Wall -Wextra -ansi -pedantic
, pero ¿es una buena práctica?
vea también: [comprobación de nula antes de llamar libre] (http://stackoverflow.com/questions/1912325/checking-for-null-before-calling-free) – Mat
a abrirse. La pregunta era: *** "... es una buena práctica" ***; y no *: ... es legal "*. Son dos preguntas diferentes. Estoy interesado en saber la justificación para liberar un puntero NULL ya que no se puede liberar nada. En mi opinión, no tiene sentido y es un error del programa. – jww