Menu
Coddy logo textTech

Operatori new e delete

Lezione 11 di 14 del corso Puntatori in C++ di Coddy.

L’ultima cosa importante che devi imparare sui puntatori è l’allocazione dinamica della memoria. 

L’allocazione dinamica della memoria consente di allocare memoria durante l’esecuzione. Ciò significa che non è necessario dichiarare e inizializzare le variabili che usano puntatori prima dell’avvio del programma: possiamo allocare spazio in memoria per qualcosa che verrà usato in seguito.

A questo scopo, usiamo la parola chiave new. 

int *ptr; // Dichiarazione di un puntatore
// Allocazione della memoria per 1 int:
ptr = new int; // ptr punta a quella memoria

Usando new, riserviamo essenzialmente spazio nella memoria per un intero che potremo usare in seguito.

Per evitare perdite di memoria, di cui parleremo nella prossima lezione, dovremmo eliminare ogni blocco di memoria allocato con new prima della fine del programma, usando la parola chiave delete.

int *ptr;
ptr = new int;
*ptr = 10;

cout << "*ptr = " << *ptr << endl;
delete ptr; // Free up allocated memory

Come puoi vedere, usando la parola chiave delete, eliminiamo in seguito la memoria allocata per il puntatore ptr; quello spazio in memoria viene così deallocato e liberato. Nella prossima lezione imparerai l’importanza di controllare le perdite di memoria.

quiz iconMettiti alla prova

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

quiz iconMettiti alla prova

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

quiz iconMettiti alla prova

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

challenge icon

Sfida

Facile

Alloca dinamicamente memoria per tre interi usando i puntatori ptrA, ptrB e ptrC. Usa i tre interi forniti come argomenti della funzione e imposta i valori agli indirizzi dei puntatori affinché corrispondano rispettivamente agli interi. Il primo intero a ptrA, il secondo intero a ptrB e l’ultimo intero a ptrC; infine, stampa tutti i puntatori dereferenziati, separati da uno spazio bianco.

NON scrivere la <i>main()</i> funzione

Provalo tu

#include <iostream>

using namespace std;

void dynamicMemory(int a, int b, int c) {
    // Inserisci qui il tuo codice
}

// NON scrivere la funzione main()

Tutte le lezioni di Puntatori in C++

Esercitati da solo: Compilatore C++ online