C | Asignación dinámica de memoria | Pregunta 7

¿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;

Cuestionario de esta pregunta

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *