Che cos’è l’allocazione dinamica della memoria?

L’allocazione della memoria dinamica, chiamata anche allocazione della memoria basata su heap, è un tipo di gestione della memoria nettamente contrastata dall’allocazione della memoria statica. Nell’allocazione dinamica della memoria, il programmatore dice al computer esattamente quanta memoria allocare per ogni programma e per quanto tempo conservare la memoria. Ciò risolve molti dei problemi che si verificano nell’allocazione della memoria statica, come l’uso eccessivo di memoria e programmi bloccati. Sebbene risolva molti problemi, se il programmatore dimentica di dire alla memoria di eseguire il dump, la memoria dinamica può diventare un problema.

I computer, per impostazione predefinita, utilizzano l’allocazione di memoria statica. Ciò significa che la memoria trattiene i programmi quando vengono utilizzati, anche se il programma non viene più utilizzato o se la memoria trattenuta diventa pericolosa o un ostacolo alle prestazioni. Ad esempio, se l’utente interrompe l’esecuzione di un programma che occupa 2 megabyte (MB) su un computer da 3 MB e un secondo programma necessita di altri 2 MB, il secondo programma non funzionerà. Questo perché non c’è abbastanza memoria nel computer per l’altro programma.

Con l’allocazione della memoria statica, l’utente o il programmatore non può specificare la quantità di memoria che desidera archiviare, né il programmatore può dire alla memoria statica di eseguire il dump della memoria per liberare risorse. Questo è il motivo per cui gli utenti avanzati utilizzano spesso l’allocazione dinamica della memoria. Il programmatore è in grado di controllare tutto ciò che riguarda la memoria, incluso il tempo di conservazione delle risorse.

Ad esempio, il programmatore può impostare l’allocazione dinamica della memoria in modo che contenga solo 1 MB o meno, il che farebbe risparmiare abbastanza memoria di sistema per consentire l’apertura di altri programmi. Questo può essere fatto perché la memoria statica di solito contiene tutto ciò che riguarda il programma, mentre la memoria dinamica consente ai programmatori di impostarlo su un valore inferiore che contiene alcuni dati, ma non tutto. Allo stesso tempo, sarà ancora necessaria la memoria statica, che può essere impostata in questo schema di allocazione.

Un potenziale problema con l’allocazione della memoria dinamica, che raramente entra in gioco, è che la memoria dinamica potrebbe riempirsi se il programmatore dimentica di impostare un valore temporale. Se non viene impostato alcun valore temporale, a differenza della memoria statica che alla fine rilascerà la memoria, la memoria dinamica manterrà le informazioni. Se il programma ha un’applicazione di dump dei rifiuti, e la maggior parte lo fa, si attiverà dopo un certo periodo di tempo per cancellare la memoria. È comunque consigliabile impostare un valore temporale per l’allocazione della memoria.