C/Gestione della memoria: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 3:
Il linguaggio [[C]], come il lettore ha avuto modo di constatare leggendo il testo, è caratterizzato dal dare al programmatore il totale controllo sullo sviluppo della sua applicazione, non mascherando niente, anche a costo di una iniziale difficoltà tutt'altro che scontata.
 
Pertanto, mentre in linguaggi, come [[Python]], [[Ruby]], [[Java]], la memoria è gestita dal [[Garbage collector]], nel C è compito del programmatore provvedere ad allocare la memoria e soprattutto a disallocarladeallocarla.
 
Ovviamente, per comprendere i meccanismi di gestione della memoria, è necessario conoscere l'organizzazione della stessa.
Riga 9:
== La memoria: lo stack e lo heap ==
 
Possiamo immaginare la memoria divisa in due settori (detti '''segmenti'''): lo '''stack''' e lo '''heap'''. Lo stack è la memoria "fissa", che non cambia nel corso dell'esecuzione del programma, al contrario ladel segmento heap, che è unala memoria cosiddetta "dinamica", le cui dimensioni mutano durante l'esecuzione dell'applicativoapplicazione.
 
Per meglio comprendere il concetto, ricorriamo ad un esempio pratico. VogliasiVogliamo creare un software per la somma di due numeri: si istanzianodichiarano due variabili con le quali si gestiscegestire il processo logico del suddetto. In questo caso noi conosciamo il numero di valori con cui dobbiamo operare: due, e pertanto creiamo(le due variabili).
Ma si possono verificare situazioni nelle quali non si conosce a prescinderepriori il numero dei valori con i quali il programma dovrà confrontarsioperare.
 
QuestoIn è ilquesto caso dellesi usano le liste, unparticolari arraystrutture dati le cui dimensioni cresconopossono variare (aumentando o diminuendo) durante l'esecuzione edel diminuisconoprogramma. Immaginiamo quindi di dover memorizzare nel nostro programma un numero n di utenti, che non conosciamo a prescindere e che può variare nel corso dell'esecuzione. Come ovviare a questa situazione?
 
== Funzioni di allocazione dinamica ==