Эта строка размещается в стеке, поэтому нет возможности освободить используемую память до тех пор, пока не вернется функция, которую она вызывает, (когда это произойдет автоматически). Если вы не вызываете эту функцию рекурсивно *, это никоим образом не приведет к утечке памяти, потому что как только функция вернет пространство, оно будет использовано для будущих кадров стека. И если вы беспокоитесь о безопасности, вам нужно просто пройтись по нему и обнулить элементы строки.
Если вам нужен свободный () блок памяти, вы можете сделать следующее и разместить массив в куче:
char *str = malloc(256*sizeof(char)); // str now is a pointer to a 256-char array
...
// some code here
...
free(str); // free the memory
* это не реальная утечка памяти, но некоторые люди говорят «утечка памяти», когда они имеют в виду «кончается память». В любом случае, пространство стека намного более ограничено, чем пространство кучи, поэтому вам нужно следить за размером используемых там блоков памяти.