Bisher verwies ein Zeiger auf bereits bereitgestellten (allocated) Speicher für eine einfache Variable, Struktur, Feld. Für Zeiger kann aber auch ein zum Typ dazugehöriger Speicherbereich dynamisch allokiert werden. Hierzu benutzt man das neue Schlüsselwort new. Der damit allokierte Speicher kann mittels delete wieder freigegeben werden.
// Dynamic variable and // Dynamic array 1D #include <iostream.h> using namespace std; int main() { int n,i; double *pa, *pvar; cout << " Eingabe n : "; cin >> n; pvar = new double; // Allocate variable *pvar = 3.5 * n; cout << "Inhalt des Speicherplatzes auf den pvar zeigt: " << *pvar << endl; delete pvar; // Deallocate variable pa = new double[n]; // Allocate array // initialize array for (i=0;i<n;i++) pa[i] = (i+1)*(i+1); // output array; for (i=0;i<n;i++) cout << " " << pa[i] << endl; delete [] pa; // Deallocate array system("PAUSE"); return 0; }
Die Anweisung pa = new double[n]; allokiert n*sizeof(double) Byte für den Zeiger pa. Danach kann das dynamische Feld pa wie ein statisches Feld behandelt werden. Allerdings nutzen dynamische Felder den vorhandenen Speicherplatz besser, da dieser mit dem delete-Befehl freigegeben und anderweitig wieder genutzt werden kann.