PDA

View Full Version : [C]piccola curiosità sul'allocazione di memoria


gepeppe
19-01-2008, 17:43
salve, mi è venuto un piccolo dubbio. Se io alloco lo spazio per una "stringa" in una funzione, con malloc (o calloc è lo stesso):
char *BUFFER;
BUFFER = (char *)malloc(50*sizeof(char));

ecco, in memoria ho 50 "char" disponibili. Se però ne uso solo 30, chiudendo alla fine la stringa con BUFFER[29] = '\0', i restanti byte, all'uscita dalla mia funzione, che fine fanno? vengono riutilizzati, oppure resteranno sempre inutilizzati fino alla fine del programma? oppure al'uscita della funzione vengono liberati?

premetto che il puntatore a BUFFER, viene usat oanche fuori la funzione.

E se all'uscita della funzione dopo aver fatto qualcosa col valore di BUFFER, ora che non mi serve più do un bel free(P) dove P è il puntatore che, fuori la mia funziona puntava a BUFFER, libererò tutti e 50 gli spazi che avevo chiesto con la malloc oppure solo i 30 fino al valore di fine stringa che ho dato??

quante domande è?? :D

grazie per le risposte!

andbin
19-01-2008, 17:57
Se però ne uso solo 30, chiudendo alla fine la stringa con BUFFER[29] = '\0', i restanti byte, all'uscita dalla mia funzione, che fine fanno? vengono riutilizzati, oppure resteranno sempre inutilizzati fino alla fine del programma? oppure al'uscita della funzione vengono liberati?Il sistema ti ha allocato 50 byte, non gli interessa come li usi e cosa ci scrivi. Se tu non li usi ... restano allocati e inutilizzati.

E se all'uscita della funzione dopo aver fatto qualcosa col valore di BUFFER, ora che non mi serve più do un bel free(P) dove P è il puntatore che, fuori la mia funziona puntava a BUFFER, libererò tutti e 50 gli spazi che avevo chiesto con la malloc oppure solo i 30 fino al valore di fine stringa che ho dato??Tutti 50 byte.