Saltar al contenido

Cómo liberar memoria de la matriz de caracteres en C

Solución:

Las variables locales se liberan automáticamente cuando finaliza la función, no es necesario que las libere usted mismo. Solo libera memoria asignada dinámicamente (p. Ej., Utilizando malloc) como está asignado en el montón:

char *arr = malloc(3 * sizeof(char));
strcpy(arr, "bo");
// ...
free(arr);

Más sobre la asignación de memoria dinámica: http://en.wikipedia.org/wiki/C_dynamic_memory_allocation

No liberas nada en absoluto. Dado que nunca adquirió ningún recurso de forma dinámica, no hay nada que deba, ni siquiera se le permita, de forma gratuita.

(Es lo mismo que cuando dices int n = 10;: No hay recursos dinámicos involucrados que deba administrar manualmente).

La memoria asociada con arr se libera automáticamente cuando arr sale de su alcance. Es una variable local o se asigna estáticamente, pero no se asigna dinámicamente.

Una regla simple que debe seguir es que solo debe free() en un puntero que fue devuelto por una llamada a malloc, calloc o realloc.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

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