Il programmatore è responsabile per la gestione del memoria allocata da malloc e non il sistema nel senso che è suo compito liberarla. Quindi quella memoria non viene liberata. infatti nel semplice programma che hai postato tu hai un char di memoria non liberata quando questo programma finisce. Le regola é: la quantità di memoria che chiedo al sistema lo devo rendere indietro quando questa non mi serve più. Il tuo esempio bisogna modifiarlo per non avere il cosidetto "memory leak"
http://it.wikipedia.org/wiki/Memory_lea
int main(int argc, char* argv[]){
char* miaStringa = alloca (1);
miaStringa[0] = 'a';
free(miaStringa);
}