Fondamenti di programmazione in C++, 2e - Capitolo 8

Page 1

Allocazione dinamica della memoria 8.1 8.2 8.3

Gestione dinamica della memoria L’operatore new L’operatore delete

8.4 8.5 8.6

8

F

Indice Esempi di new e delete Gestione dell’overflow della memoria Tipi di memoria in C++

INTRODUZIONE Abbiamo visto nei precedenti capitoli che le variabili possono essere globali o locali. Le globali occupano posizioni fisse di memoria all’interno del segmento dati assegnato al programma dal sistema operativo, e tutte le funzioni possono utilizzarle. Le variabili locali a una funzione vengono invece memorizzate nello stack ed esistono soltanto mentre è in esecuzione la funzione. È possibile inoltre creare variabili static , che occupano anch’esse posizioni fisse di memoria nel segmento dati, ma sono utilizzabili solo nel modulo (ovvero, nel file sorgente) o nella funzione in cui sono definite. Queste classi di variabili condividono una caratteristica, quella di

essere definite al momento della compilazione, e questo può essere anche un loro limite. Infatti non sempre è possibile sapere prima dell’esecuzione quanta memoria (cioè quante variabili) saranno necessarie al programma. In C è possibile assegnare dinamicamente memoria durante l’esecuzione del programma mediante le funzioni malloc() e free(). In questo capitolo vedremo che il C++ offre un metodo migliore e più efficiente. Invece che chiamare una funzione per assegnare o liberare memoria, C++ invoca due operatori: new() e delete(), che assegnano e liberano la memoria della zona denominata heap.

8.1 Gestione dinamica della memoria Con il termine heap si denota la parte della memoria principale che può essere allocata dinamicamente durante l’esecuzione del programma. Per poter essere riallocata, la memoria allocata a “run-time” può essere deallocata automaticamente mediante un garbage recollector (come avviene, per esempio, in Java) oppure rimanere occupata fino a che il programmatore la libera esplicitamente mediante opportune istruzioni. In C la gestione della memo-

08txt.indd 221

11/05/21 11:33


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.