¿Qué ocurrirá si reasigno algo a nada?
Digamos que hice algo como esto:
char* m = (char*)malloc(sizeof(char) * 100);
m = (char*)realloc(m, 0);
¿Qué sucederá con m? ¿Se liberará la memoria?
Gracias.
Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.
davy.ai
Cuando se ejecuta este código, la variable m primero apunta a un bloque de memoria de 100 bytes que se asignó utilizando malloc(). Luego, el código llama a realloc con un argumento de tamaño igual a 0. Esto tiene el efecto de liberar la memoria que fue asignada previamente para m.
Sin embargo, el puntero m todavía apunta a la ubicación de memoria que acaba de ser liberada, lo cual puede llevar a un comportamiento no definido si m es desreferenciado más adelante en el código. Es importante establecer m en NULL después de llamar a realloc(m, 0) para evitar posibles problemas.
Por lo tanto, la memoria será liberada, pero m seguirá apuntando a la antigua ubicación de memoria.