Kursinhalt
C++ Smart Pointers
C++ Smart Pointers
Der Bedarf an Smart Pointern
Manuelle Speicherverwaltung erfordert, dass Entwickler daran denken, den Speicher explizit freizugeben, wenn er nicht mehr benötigt wird. Wie wir im letzten Kapitel gesehen haben, kann die manuelle Freigabe zu Speicherlecks und hängenden Zeigern führen.
Man kann sich die manuelle Speicherverwaltung wie das manuelle Aufräumen nach einer Party vorstellen. Wenn man vergisst aufzuräumen, kann dies im Laufe der Zeit zu einem unordentlichen und chaotischen Raum führen, der für zukünftige Partys ungeeignet ist.
Stellen Sie sich nun vor, Sie hätten ein Team von fleißigen Reinigungskräften, die automatisch das Aufräumen nach der Party übernehmen. Sie sorgen dafür, dass nach der Party nichts zurückbleibt und alles sauber und bereit für das nächste Event ist. Genau das tun Smart Pointer für die Speicherverwaltung in C++.
Einführung in Smart Pointer
Smart Pointer sind Objekte, die die Speicherverwaltung automatisieren, selbst für dynamischen Speicher. Es gibt drei Arten von Smart Pointern:
- Einzigartige Zeiger: Diese Smart Pointer gewährleisten exklusive Eigentümerschaft des dynamisch zugewiesenen Objekts. Das bedeutet, dass zu jedem Zeitpunkt nur ein einzigartiger Zeiger das Objekt besitzen kann.
- Geteilte Zeiger: Diese Smart Pointer erlauben mehreren Zeigern, die Eigentümerschaft des gleichen dynamisch zugewiesenen Objekts sicher zu teilen.
- Schwache Zeiger: Diese Smart Pointer können auf eine Ressource zugreifen, ohne die Eigentümerschaft zu übernehmen.
Die Rolle von Referenzen
Smart Pointer sind ein wertvolles Werkzeug, aber sie sind nicht die einzigen in unserem Arsenal. Referenzen spielen ebenfalls eine entscheidende Rolle im Speichermanagement und bei der Datenmanipulation.
In diesem Beispiel erstellen wir eine Referenz auf die Ganzzahlvariable x
. In nachfolgendem Code, wenn wir den Wert von refX
ändern, wird der Wert von x
automatisch geändert. Ebenso, wenn wir den Wert von x
ändern, wird refX
ebenfalls aktualisiert.
Merken
Referenzen bieten ein Alias für bestehende Objekte. Alle Änderungen am Alias werden auch am bestehenden Objekt vorgenommen und umgekehrt.
Wir haben kurz die Bedeutung von Smart Pointern und Referenzen im Umgang mit dynamischem Speicher angesprochen. Wir werden diese Konzepte in den nächsten Abschnitten ausführlich erkunden.
Danke für Ihr Feedback!