Zum Inhalt springen
Modul 3

Speicher & Ressourcen

Meistere das Besitzmodell von C++ — von rohen Zeigern über Smart Pointer bis zur Verschiebesemantik — und schreibe Code, der nie leckt.

Jetzt lernen9 Lektionen

Zeiger & Referenzen

  1. Zeiger: Adressen, Dereferenzierung & Arithmetik

    Verstehe Zeiger als Speicheradressen, lerne den Adress- und den Dereferenzierungsoperator kennen, arbeite mit Zeigerarithmetik in Arrays, achte auf const-Korrektheit bei Zeigern und erfahre, wann rohe Zeiger im modernen C++ noch angebracht sind.

  2. Referenzen: Lvalue, Rvalue & Fallstricke

    Erkunde Lvalue- und Rvalue-Referenzen, verstehe die Wertkategorien von C++, lerne die Regeln des Reference Collapsing und Forwarding-Referenzen kennen und vermeide Fehler durch baumelnde Referenzen.

  3. Dynamischer Speicher: new, delete & ihre Gefahren

    Lerne, wie dynamische Allokation mit new und delete funktioniert, verstehe die Gefahren von Speicherlecks, doppeltem Freigeben und Zugriff nach dem Freigeben, und erfahre, warum moderner C++-Code kein einziges rohes new/delete enthalten sollte.

Smart Pointer

  1. std::unique_ptr: exklusiver Besitz

    Lerne, wie std::unique_ptr exklusiven Besitz ohne jeden Overhead bietet, wie du make_unique einsetzt, eigene Deleter für C-Ressourcen schreibst und Factory-Funktionen idiomatisch gestaltest.

  2. shared_ptr, weak_ptr & Besitzgraphen

    Verstehe referenzgezählten geteilten Besitz mit shared_ptr, brich Zyklen mit weak_ptr auf, lerne Kontrollblöcke und den Aliasing-Konstruktor kennen und erkenne, wann shared_ptr die falsche Wahl ist.

Verschiebesemantik & RAII

  1. Verschiebesemantik & std::move

    Verstehe, welches Problem die Verschiebesemantik löst, warum std::move nur ein Cast und kein Verschieben ist, wie du Verschiebekonstruktor und Verschiebezuweisung implementierst und warum noexcept für die Performance von Containern entscheidend ist.

  2. Perfect Forwarding mit std::forward

    Verstehe, warum benannte Rvalue-Referenzen Lvalues sind, lerne das kanonische Weiterleitungsmuster mit std::forward kennen und sieh, wie emplace_back mit variadischer Weiterleitung Objekte direkt an Ort und Stelle konstruiert.

  3. RAII: das grundlegende Ressourcenmuster

    Lerne RAII (Resource Acquisition Is Initialization) kennen — das zentrale C++-Muster für ausnahmesichere Ressourcenverwaltung. Implementiere eigene RAII-Wrapper, verstehe lock_guard und scoped_lock und erfahre, warum RAII-Typen nur verschiebbar oder referenzgezählt sein dürfen.

Fortgeschrittener Speicher

  1. Speicherlayout, Alignment & Objektdarstellung

    Verstehe Padding und Alignment-Anforderungen in Structs, optimiere die Reihenfolge der Member für kompakte Größen, lerne Cache-Lines und False Sharing kennen und nutze C++20-Features wie [[no_unique_address]] für kompakte Layouts.