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!
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!