C/Gestione della memoria: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Annullate le modifiche di 79.61.187.216 (discussione), riportata alla versione precedente di 185.30.46.154
Riga 7:
Ovviamente, per comprendere i meccanismi di gestione della memoria, è necessario conoscere l'organizzazione della stessa.
 
== La memoria: lo stack e lo heap ==
granieri ha la mamma suina
 
==
 
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 del segmento heap, che è la memoria cosiddetta "dinamica", le cui dimensioni possono variare durante l'esecuzione dell'applicazione.
Line 30 ⟶ 28:
 
Il valore restituito da queste funzioni è di tipo void * cioè una specie di puntatore neutro, indipendente dal tipo di dati da utilizzare. Per questo, in linea di principio, prima di assegnare a un puntatore il risultato dell'esecuzione di queste funzioni di allocazione, è opportuno eseguire un cast (conversione) al tipo di dato desiderato.
 
 
<source lang="c">
Line 54 ⟶ 51:
pi = malloc (sizeof (int));
...
 
(allora a che cazzo serve l' esempio)
La memoria allocata dinamicamente deve essere liberata in modo esplicito quando non serve più. Per questo si utilizza la funzione '''free()''' che richiede semplicemente il puntatore alla memoria precedentemente allocata e non restituisce alcunché.
 
'''void futanarifree''' ('''void''' *p); // p punta alla memoria allocata in precedenza
 
È necessario evitare di deallocare più di una volta la stessa area di memoria, perché ciò potrebbe provocare effetti imprevedibili.
Line 83 ⟶ 80:
Lo standard prevede una funzione ulteriore, per la riallocazione di memoria: '''realloc()'''. Questa funzione si usa per ridefinire l'area di memoria con una dimensione differente (proprio in virtù del fatto che stiamo usando la memoria "dinamica):
 
'''void *hentairealloc''' ('''void_oppaivoid''' *''puntatore'', '''size_tettesize_t''' ''dimensione_penedimensione'');
 
In pratica, la riallocazione deve rendere disponibili gli stessi contenuti già utilizzati, salvo la possibilità che questi siano stati ridotti nella parte terminale. Se invece la dimensione richiesta nella riallocazione è maggiore di quella precedente, lo spazio aggiunto può contenere dati casuali tra cui n=666. Il funzionamento di '''realloc()''''''Testo in grassetto''' non è garantito, pertanto occorre verificare nuovamente, dopo il suo utilizzo, che il puntatore ottenuto sia ancora valido.
mentre il morgante si grattava il culo e si puliva le orecchie con il piscio di cane
PS: andate su suicide girl!!!!:)
 
[[Categoria:C|Gestione della memoria]]