Diese Lektion behandelt das Anlegen und Verwalten von Speicher zur Laufzeit.
Fokus liegt auf new, delete und modernen C++-Techniken wie Smart Pointern.
new reserviert Speicher dynamisch, delete gibt ihn wieder frei.
int* ptr = new int; // einzelnes int
*ptr = 42;
int* arr = new int[10]; // Array mit 10 ints
delete ptr; // Speicher freigeben
delete[] arr; // Array-Speicher freigeben
delete aufrufen, sonst entsteht ein Memory Leak!
int* p = new int(5); // Einzelwert 5
double* d = new double(3.14); // Einzelwert 3.14
int* arr = new int[5]{1,2,3,4,5}; // Array initialisiert
int* ptr = new int(10);
cout << *ptr << endl; // Dereferenzierung
*ptr = 20; // Wert ändern
cout << *ptr << endl;
delete ptr;
int rows = 3, cols = 4;
int** matrix = new int*[rows];
for(int i = 0; i < rows; i++)
matrix[i] = new int[cols];
// Zugriff:
matrix[1][2] = 42;
// Speicher freigeben:
for(int i = 0; i < rows; i++)
delete[] matrix[i];
delete[] matrix;
unique_ptr, shared_ptr) um Speicherlecks zu vermeiden.
#include <memory>
unique_ptr<int> uptr = make_unique<int>(10);
cout << *uptr << endl;
// kein delete nötig, automatisch freigegeben
new/delete-Aufrufe können so sicher ersetzt werden.
new / delete für dynamischen Speicherdelete oder Smart Pointer