Saltar al contenido

Cómo liberar memoria de char array C ª

Si encuentras algún detalle que no entiendes puedes comentarlo y te ayudaremos tan rápido como podamos.

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 (por ejemplo, usando malloc) tal como está asignado en el montón:

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

Más información 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 tenga que liberar, ni siquiera se le permita liberar.

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

La memoria asociada a arr se libera automáticamente cuando arr sale fuera de 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 hacer cada llamada free() en un puntero que fue devuelto por una llamada a malloc, calloc o realloc.

Puedes añadir valor a nuestra información participando con tu veteranía en las interpretaciones.

¡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 *