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 memoriaUsando 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 memoryCome 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.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Sfida
FacileAlloca 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++
2Puntatori e riferimenti
Puntatori come parametriRiferimenti - &Riferimenti come parametriPuntatori vs riferimenti3Allocazione dinamica della memoria
Operatori new e deleteMemory leakArray dinamicoArray dinamico - inserimentoEsercitati da solo: Compilatore C++ online