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

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 .