no,
lo de liberar la memoria loo debes hacer tu,
cada vez que dejes de utilizar un espacio de memoria , por ejemplo uno llmado con malloc, deberas liberarlo:
ejemplo
void memp()
{
char *p;
p=(char *)malloc(50);
...
...
..
..
..
..
}
si lo dejas asi cada vez que utilices memp() estaras reservando un bloque de memoria diferente sin liberarlo nunca.. pero asi esto se soluciona:
void memp()
{
char *p;
p=(char *)malloc(50);
...
...
..
..
..
..
free(p);
}