Sempre sulle malloc, mi sta venendo un dubbio parecchio atroce:

char* alloca (int n){
char* stringa = malloc (n * sizeof(char));
return stringa;
}

int main(int argc, char* argv[]){
char* miaStringa = alloca (1);
miaStringa[0] = 'a';
}

Ha senso? Oppure la memoria allocata da malloc viene liberata all'uscita della funzione? Non riesco a trovare una risposta chiara a riguardo...
Grazie mille.