¿Cuál es el problema con el siguiente código?
#include<stdio.h> int main() { int *p = (int *)malloc(sizeof(int)); p = NULL; free(p); }
(A) Error del compilador: free no se puede aplicar en el puntero NULL
(B) Fuga de memoria
(C) Puntero colgante
(D) El programa puede bloquearse cuando se llama a free() para el puntero NULL.
Respuesta: (B)
Explicación: se puede llamar a free() para un puntero NULL, por lo que no hay problema con la llamada de función gratuita.
El problema es la fuga de memoria, a p se le asigna algo de memoria que no se libera, pero el puntero se asigna como NULL. La secuencia correcta debe ser la siguiente:
free(p); p = NULL;
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA