L’allocazione dinamica della memoria in C. Quando farne uso?

Gestione dell’allocazione dinamica della memoria, uso della funzione malloc.

Il linguaggio di programmazione C è per natura un linguaggio molto flessibile, tale flessibilità si evidenzia molto nella gestione dell’allocazione dinamica della memoria. Malloc e realloc sono funzioni per l’allocazione dinamica delle memoria in C. Il linguaggio gestisce due tipi di aree, dove alloca le variabili, lo stack l’heap. Se non diversamente specificato dallo sviluppatore, il C memorizza tutti i dati nello stack e la rimozione di tali dati da quest’area avviene automaticamente quando perdono visibilità, o meglio, quando il blocco di codice, che le contiene, perde la visibilità o lo scope.

L’accesso allo stack è veloce ma nello stesso tempo le dimensioni in byte, a lui riservate, sono limitate, quindi, lo stack è un’area ben definita e limitata. Cosa diversa è per l’heap, tutto ciò che è espressamente allocato con malloc va a finire in questa area, e deve essere esplicitamente disallocato dal programmatore con la funzione free in C, pena il famigerato memory leak.

Il C++ risolve questo problema con il ricorso ai puntatori intelligenti, chiamati anche Smart Pointer. Si fa ricorso a malloc, quindi, all’allocazione della memoria per le variabili da memorizzare nell’heap, quando si devono gestire, ad esempio, strutture dati o oggetti di modeste dimensioni. Ma per tutto ciò che appartiene ai tipi di dato nativi del C, ad esempio, come interi o stringhe, lo stack è da considerarsi la soluzione migliore.

Se sei interessato a scoprire gli algoritmi, le strutture dati dell’informatica, ed implementarne il codice col linguaggio di programmazione C, con l’aiuto di un docente d’eccezioneclicca qui. oppure se vuoi renderti conto della validità del corso puoi seguire gratuitamente le prime tre lezioni, cliccando sui link sottostanti:

Potrebbe interessarti anche

phpcodewizard - un generatore di codice PHP
Seguimi su
Latest posts by Antonio Lamorgese (see all)

Antonio Lamorgese

Amministratore di rete, programmatore ed esperto di pratiche SEO. Dopo anni di esperienza nel settore, ho ideato un generatore di codice PHP Scopri di più su https://www.phpcodewizard.it.