C - Allocazione dinamica


Con il linguaggio di programmazione C è possibile allocare dinamicamente delle porzioni di memoria ed assegnarne l’indirizzo manualmente ad una o più variabili di tipo puntatore.
La funzione utilizzata per allocare la memoria necessaria è la malloc(n bytes), cui viene passato come parametro il numero di bytes necessari; non è però necessario indicare il numero di bytes come numero intero ma si utilizza la funzione sizeof(tipo o espressione) che ritorna il numero di byte del tipo o dell’espressione passata come parametro.

Es.
Si vuole allocare un vettore di 5 interi

int *p, n = 5;

p = malloc (n * sizeof(int));

In questo modo la variabile puntatore p contiene l’indirizzo della prima cella del vettore di interi.

Se viene allocato dinamicamente un array, è possibile accedere alle varie celle come se la variabile puntatore p fosse un normale array.

Es.

p[3]
p[0][1]

Una volta che la memoria allocata non è più necessaria occorre liberarla per evitare il fenomeno del memory leak, che rende occupata porzione di memoria non più utilizzata da nessuno (esistono comunque nel kernel del sistema operativo degli strumenti che automatizzano questa operazione, rendendo quasi superfluo il suo utilizzo in quanto anche se utilizzato, potrebbe non essere effettuato fino a successiva richiesta del sistema operativo stesso).

Hai bisogno di aiuto in Informatica?
Trova il tuo insegnante su Skuola.net | Ripetizioni
Registrati via email