Creé una matriz de caracteres así:
char arr[3] = "bo";
¿Cómo libero la memoria asociada con la matriz que llamé “arr”?
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
) como se asigna en el montón:
char *arr = malloc(3 * sizeof(char)); strcpy(arr, "bo"); // ... free(arr);
Más acerca de la asignación de memoria dinámica: http://en.wikipedia.org/wiki/C_dynamic_memory_allocation
No liberas nada en absoluto. Como nunca adquirió ningún recurso dinámicamente, no hay nada que tenga, o incluso se le permita, liberar.
(Es lo mismo que cuando dice int n = 10;
no hay recursos dynamics involucrados que deba administrar manualmente).
La memoria asociada con arr
se libera automáticamente cuando arr
sale del scope. Es una variable local o está asignada estáticamente, pero no se asigna dinámicamente.
Una regla simple que debe seguir es que solo debe realizar cada llamada free()
en un puntero que fue devuelto por una llamada a malloc
, calloc
o realloc
.