Newsgroup: it.comp.lang.c
Titolo: perche' usare free?

 Antonio
Sicuramente qualcuno mi correggerà, vediamo se dico cose giuste...
è buona norma deallocare la memoria dinamica non tanto perchè al termine del
tuo programma il sistema operativo la riottiene, ma piuttosto perchè
potresti averne bisogno durante l'esecuzione del programma stesso...
Ciao
Gnagno


usare free() *ALLA FINE* di un programma non ha infatti alcun senso, se non
quello di mostrare che sei un programmatore ordinato.
Ma *ALL'INTERNO* libera memoria che poi viene riutilizzata dal programma stesso
(e solo lui - la memoria non viene mai rilasciata al sistema finche' il
programma non esce), e limita gli sprechi.
Se all'inizio di daemon_function_that_will_be_living_for_128_hours() alloco un
buffer di 5 MB, e non lo dealloco appena ho finito di utilizzarlo, per 128 ore
avro` 5MB occupati, eventualmente in maniera assolutamente inutile.
Adieu,
-- 
Lestat de Lioncourt  -- a.k.a --  Ciro Mattia Gonano
 Undergraduate student in Computer Science at University of Bologna
 IHGGer #1049   <=>  ICQ#: 52631406   <=>   URL: 
http://www.CS.UniBO.It/~gonano
 Debian admin at 
Students.CS.UniBO.It
 <=> look at headers for my JabberID & GPG

 assolutamente inutile.
Beh, non tutti i sistemi operativi liberano automaticamente la memoria,
quinci di sono casi in cui ha senso anche invocare la free() alla fine del
programma.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 inutile.
Di solito, il vero problema non e' avere 5 MB occupati per 128 ore;
e' avere 5 MB occupati ogni x secondi per 128 ore.
Apache per evitare problemi con eventuale memoria non deallocata, ha
un parametro che consente di specificare il numero massimo di richieste
che un server puo' soddisfare prima di defungere.
Ovviamente questo meccanismo si basa sul fatto che il S.O. libera la
memoria allocata e non rilasciata al termine del programma.
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 comunque il sistema operativo riottiene la memoria allocata?
E` cosa buona e giusta non fare affidamento sul fatto che l'OS rilasci le
risorse di un programma alla sua terminazione...
A me poi piace la pulizia, quindi appena finisco di fare le mie cose,
ripulisco il tutto: dealloco la memoria, chiudo i file descriptor... ;-)
-- 
 Ciao, Bianco.                         Reply to luca.bianco (at) 
tiscali.it
|--------[Powered by Debian GNU/Linux Sarge - 2.4.19 - AMD K6-200]--------|
|------------[Linux Registered User #287769 - Machine #169192]------------|

 programma.
Di quali sistemi operativi stai parlando?
Io ricordavo che ogni sistema operativo (degno di codesto nome) al termina
dell'esecuzione di un processo indicasse come riscrivibili tutte le pagine
(o segmenti) di memoria da questo occupate => libera la memoria locale al
processo (stack, heap e code) e la memoria locale ad ogni suo thread (stack)
Forse intendevi dire che non libera la shared memory condivisa con altri
processi perche' sarebbe dannoso.
ciao,
Nids

Deallocare la memoria è IMPORTANTE durante il corso di vita del programma
stesso; per l'efficienza, la velocità etc...
Però è anche vero che, ad esempio windows, non rilascia tutta la memoria
allocata dinamicamente da un programma, anche dopo che si è terminato lo
stesso.
Questo l'ho testato personalmente e comunque non tutti i sistemi lo fanno!
Il vecchio dos non l'ho fa...
--------------------------------
Inviato via 
http://usenet.libero.it

 Di quali sistemi operativi stai parlando?
In altri punti di questo thread hai ottenuto una risposta :)
Personalmente ti aggiungo una nota: dove sta' scritto che la memoria deve
essere rilasciata dal sistema? In quale standard?
Perche', solo se lo trovi scritto in qualche standard, puoi farci
affidamento purtroppo.
Personalmente non conosco i dettagli della gestione della memoria dei vari
sistemi operativi, ne potro' mai saperli... ma perche' devo fare
affidamento sulla speranza che gestiscano per me la deallocazione della
memoria?
Ovviamente parlo solo di free() a fine programma, non di quelle che fai
durante e che assumono un significato diverso.


 memoria?
diciamo che la deallocazione e` sempre caldamente consigliata. 
Sopratutto quando il programma lavora molto :-)
-- 
ciao, Mirco.
[ 
http://hellspawn.dnsalias.net/~mircomir/
 ] [ Icq#:51640305 ]
[ 
http://pido2.webhop.net/
 ]