[C]Sulle malloc...

di il
1 risposte

[C]Sulle malloc...

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.

1 Risposte

  • Re: [C]Sulle malloc...

    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);
    }
    
Devi accedere o registrarti per scrivere nel forum
1 risposte