Vita morte e miracoli delle variabili in C

carlo232
Una domanda elementare, vero o falso?

void A()
                {
                     int i=0;
                }


se chiamo la funzione A viene allocato spazio in memoria per la variabile i, però appena è terminata la funzione tale spazio viene rilasciato per future altre variabili.

Risposte
_luca.barletta
vero

carlo232
"luca.barletta":
vero


Okay, un amico è riuscito a mettermi questo terribile dubbio e la cosa mi preoccupava un tantino...

Pablo5
esatto dovrebbe essere deallocato datop che "nasce" e "muore" quando la funzione viene chiamata/chiusa

carlo232
A proposito, se invece si è costretti a dichiarare una variabile globale (fuori dal main), ma poi essa da un certo punto in poi non è più necessaria, come si può deallocare dalla memoria a lei destinata?

codino75
bella domanda...
cioe' una variabile che ad un certo punto muore...
veramente non ho mai sentito niente di simile...
forse con un vettore dinamico di variabili..........

n.b.:le mie sono " parole in liberta' "

Diravan
"carlo23":
A proposito, se invece si è costretti a dichiarare una variabile globale (fuori dal main), ma poi essa da un certo punto in poi non è più necessaria, come si può deallocare dalla memoria a lei destinata?


ottima domanda ma scusa la considerazione ma quei 8/16/32 bit di memoria che ti frega o più se è un vettore sono proprio cosi vitali ????

Pablo5
"carlo23":
A proposito, se invece si è costretti a dichiarare una variabile globale (fuori dal main), ma poi essa da un certo punto in poi non è più necessaria, come si può deallocare dalla memoria a lei destinata?



non credo sia possibile....bho

umbimbo1
"Diravan":

ottima domanda ma scusa la considerazione ma quei 8/16/32 bit di memoria che ti frega o più se è un vettore sono proprio cosi vitali ????


Sono d'accordo con Diravan.
L'unico modo per rilasciare una variabile è tramite puntatori, tenendo conto comunque che anche un puntatore occupa 32 bit di memoria.
Quindi, se la variabile occupa molti byte, vale la pena di farci un ragionamento, tenendo pure conto che aggiungere del software che alloca/dealloca spazio porta via memoria.

Splair
una variabile statica non si può eliminare.
Si può eliminare una variabile dinamica con il comando delete(variabile) (questo in c++, in c non ricordo).
Questo vale se si parla di variabili globali. Le variabili locali, vengono deallocate automaticamente nel momento in cui termina la funzione in cui sono state dichiarate.
ciao ciao

enigmagame
"Splair":
in c non ricordo

In C l'allocazione dinamica si effettua utilizzando la funzione malloc(), per liberare la risorsa si utilizza la funzione free().

TomSawyer1
"carlo23":
A proposito, se invece si è costretti a dichiarare una variabile globale (fuori dal main), ma poi essa da un certo punto in poi non è più necessaria, come si può deallocare dalla memoria a lei destinata?


Per questo ci sono due memorie virtuali: stack (la famosa pila) e heap (la memoria dinamica). Uno deve valutare la necessità di ricorrere a quest'ultima, prima di scrivere un programma; è comoda da usare. in ogni caso..

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.