Menu
Coddy logo textTech

Memoria dinamica con 'new'

Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 6 di 56.

Finora hai lavorato con puntatori che puntano a variabili già create nel tuo programma. Ma cosa succede se devi creare variabili mentre il programma è in esecuzione? È qui che l’allocazione dinamica della memoria con la parola chiave new diventa essenziale.

La parola chiave new ti consente di allocare memoria per una variabile nell'heap durante l'esecuzione del programma. A differenza delle variabili normali, create nello stack, la memoria allocata dinamicamente persiste finché non la liberi esplicitamente.

int* ptr = new int;  // Alloca memoria per un intero
*ptr = 42;           // Assegna un valore alla memoria allocata

In questo esempio, new int alloca memoria sufficiente per memorizzare un intero e restituisce un puntatore a quella posizione di memoria. Puoi quindi usare l'operatore di dereferenziazione per assegnare valori e accedere alla variabile allocata dinamicamente proprio come a qualsiasi altro puntatore.

L'allocazione dinamica della memoria è particolarmente utile quando non sai quanta memoria ti servirà fino all'esecuzione del programma, oppure quando hai bisogno che le variabili esistano al di fuori dell'ambito in cui sono state create. Questa flessibilità rende new uno strumento potente per realizzare programmi più complessi.

challenge icon

Sfida

Facile

Crea un programma che dimostri l'allocazione dinamica della memoria usando la parola chiave new per allocare memoria per una variabile durante l'esecuzione del programma.

Verrà fornito il seguente input:

  • Un valore intero da memorizzare nella memoria allocata dinamicamente

Il tuo programma dovrebbe:

  1. Usare la parola chiave new per allocare dinamicamente memoria per un intero
  2. Memorizzare il puntatore restituito da new in una variabile puntatore denominata numPtr
  3. Usare l'operatore di dereferenziazione per assegnare il valore di input alla memoria allocata dinamicamente
  4. Stampare il valore memorizzato nella memoria allocata dinamicamente dereferenziando il puntatore
  5. Stampare l'indirizzo di memoria memorizzato nel puntatore

Usa il seguente formato di output esatto:

Value: [value]
Address: [memory address]

L'indirizzo di memoria verrà visualizzato in formato esadecimale, che è il modo in cui C++ mostra gli indirizzi di memoria per la memoria allocata dinamicamente.

Provalo tu

#include <iostream>
using namespace std;

int main() {
    // Lee la entrada
    int value;
    cin >> value;
    
    // TODO: Escribe tu código a continuación
    // Usa 'new' para asignar memoria dinámicamente a un entero
    // Guarda el puntero en una variable llamada 'numPtr'
    // Asigna el valor de entrada a la memoria asignada dinámicamente
    
    // Muestra el resultado
    cout << "Value: " << /* desreferencia numPtr aquí */ << endl;
    cout << "Address: " << /* imprime la dirección almacenada en numPtr */ << endl;
    
    return 0;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C++ online