Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Anwendung für Einzigartige Zeiger | Einzigartige Zeiger
C++ Smart Pointers
course content

Kursinhalt

C++ Smart Pointers

C++ Smart Pointers

1. Einführung in Smart Pointer
2. Einzigartige Zeiger
3. Gemeinsame Zeiger
4. Schwache Zeiger
5. Referenzen
6. Fortgeschrittene Themen

book
Anwendung für Einzigartige Zeiger

Einzigartige Zeiger bieten eine sichere Möglichkeit, bereichsbegrenzten Heap-Speicher zu initialisieren. Hier sind einige Szenarien, in denen einzigartige Zeiger gut geeignet sind:

  • als goldene Regel, definieren Sie alle Zeiger als einzigartige Zeiger, es sei denn, sie müssen geteilt werden. Dies gewährleistet einen geringeren Gesamtspeicherbedarf Ihrer Anwendung, da einzigartige Zeiger keine Referenzen zählen;

  • verwenden Sie einzigartige Zeiger, wenn Sie mit Heap-Speicher arbeiten, der beim Betreten eines Bereichs zugewiesen und beim Verlassen des Bereichs freigegeben werden soll. Zum Beispiel können Sie einen einzigartigen Zeiger verwenden, um einen großen Vektor temporärer, dynamischer Objekte innerhalb einer Funktion zu erstellen;

  • Sie können auch einzigartige Zeiger verwenden, um Ressourcen wie Dateihandles, Sockets und Datenbankverbindungen zu verwalten. Sie stellen sicher, dass die verwiesene Ressource freigegeben wird, wenn der Zeiger den Bereich verlässt, wodurch die Wahrscheinlichkeit von Ressourcenlecks verringert wird;

  • einzigartige Zeiger sind auch eine gute Wahl beim Erstellen komplexer Datenstrukturen wie Bäume oder doppelt verkettete Listen. Durch die Durchsetzung des Einzelbesitzes jedes Elements in der Struktur können sie die Speicher- und Codeverwaltung vereinfachen.

Wann man keine einzigartigen Zeiger verwenden sollte

Es gibt jedoch bestimmte Szenarien, in denen einzigartige Zeiger nicht die beste Wahl sind. Schauen wir uns einige an:

  • wenn Ihr Programm erfordert, dass mehrere Zeiger den Besitz einer Ressource teilen, können Sie keinen einzigartigen Zeiger verwenden;

  • wenn Sie möchten, dass mehrere Teile Ihres Programms auf eine gemeinsame Ressource zugreifen, sollten Sie keinen einzigartigen Zeiger verwenden, um diese Ressource zu verwalten. Während es möglich sein könnte, den rohen Zeiger (eines einzigartigen Zeigers) an verschiedene Teile Ihres Codes weiterzugeben, würde dies das Kernprinzip des einzigartigen Besitzes brechen und möglicherweise zu Speicherlecks/-korruption führen;

  • wenn Sie mit Legacy-Code oder Drittanbieter-Paketen arbeiten, die keine intelligenten Zeiger unterstützen, müssen Sie möglicherweise auf rohe Zeiger oder andere Möglichkeiten zur Speicherverwaltung zurückgreifen.

Der folgende Code kompiliert und läuft einwandfrei. Analysieren Sie ihn sorgfältig. Ist die Verwendung eines `unique_ptr` für das `Resource`-Objekt die richtige Entscheidung?

Der folgende Code kompiliert und läuft einwandfrei. Analysieren Sie ihn sorgfältig. Ist die Verwendung eines unique_ptr für das Resource-Objekt die richtige Entscheidung?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 3
We're sorry to hear that something went wrong. What happened?
some-alt