How to free memory from char array in C
char arr = "bo";
The arr takes the memory into the stack segment. which will be automatically free, if arr goes out of scope.
You don't free anything at all. Since you never acquired any resources dynamically, there is nothing you have to, or even are allowed to, free.
(It's the same as when you say
int n = 10;: There are no dynamic resources involved that you have to manage manually.)
Local variables are automatically freed when the function ends, you don't need to free them by yourself. You only free dynamically allocated memory (e.g using
malloc) as it's allocated on the heap:
char *arr = malloc(3 * sizeof(char)); strcpy(arr, "bo"); // ... free(arr);
More about dynamic memory allocation: http://en.wikipedia.org/wiki/C_dynamic_memory_allocation
The memory associated with
arr is freed automatically when
arr goes out of scope. It is either a local variable, or allocated statically, but it is not dynamically allocated.
A simple rule for you to follow is that you must only every call
free() on a pointer that was returned by a call to