Smart Pointer

std::weak_ptr

std::unique_ptr verkörpert das Konzept des exklusiven, std::shared_ptr des geteilten Besitzes. Bleibe ich in diesem Bild, dann verkörpert der std::weak_ptr das Konzept des zeitlich eingeschränkten Besitzes, den er leiht sich die Ressource von einem std::shared_ptr aus. Der std::weak_ptr besitzt insbesondere eine Existenzberechtigung: Zyklische Referenzen von std::shared_ptr zu brechen.

Weiterlesen...
Kommentar schreibenGelesen: 1941

Besonderheiten des std::shared_ptr

Nachdem ich im letzten Artikel das große Bild zu std::shared_ptr beschrieben habe, komme ich heute zu zwei besonderen Aspekten der Smart Pointer. Zum einen zeige ich mit std::shared_from_this, wie sich ein std::shared_ptr von einem Objekt erzeugen lässt, zum anderen beschäftigt mich die Frage: Soll ein std::shared_ptr per Copy oder per Referenz übergeben werden. Insbesondere der zweite Punkt besitzt einiges an Überraschungspotential.

Weiterlesen...
Kommentare 74Gelesen: 2827

std::shared_ptr

std::shared_ptr teilen sich eine gemeinsame Ressource. Dabei zählt der gemeinsame Referenzzähler mit, wie viele Besitzer die Ressource hat. Wird der Smart Pointer std::shared_ptr kopiert, erhöht sich automatisch der Referenzzähler. Beim Löschen eines std::shared_prt wird sein Referenzzähler hingegen automatisch erniedrigt. Erreicht der Referenzzähler den Wert 0, wird die Ressource freigegeben.

Weiterlesen...
Kommentare 2Gelesen: 2747

std::unique_ptr

Ein std::unique_ptr verwaltet exklusiv den Lebenszyklus seiner Ressource nach dem RAII-Idiom. Er ist die erste Wahl für einen Smart Pointer, da er seine Arbeit in der Regel ohne Speicher- oder Performanz-Overhead vollzieht.

Weiterlesen...
Kommentare 2Gelesen: 2953

Speicher und Performanz Overhead von Smart Pointern

C++ bietet vier verschiedene Smart Pointer an. Zwei davon will ich mir in diesem Artikel unter dem Aspekt Overhead in puncto Speicher und Performanz genauer anschauen. Während mein erster Kandidat std::unique_ptr den Lebenszyklus genau einer Ressource verwaltet, teilt sich mein zweiter Kandidat std::shared_ptr typischerweise seine Ressource mit anderen std::shared_ptr. Ich nehme das Ergebnis meines Tests gerne vorweg, bevor die nackten Zahlen kommen. Es gibt wenige Gründe in modernem C++, das Speichermanagment mit new und delete explizit in die Hand zu nehmen. 

Weiterlesen...
Kommentare 7Gelesen: 3154

Sorgfältiger Umgang mit Ressourcen

Der sorgfältige Umgang mit Ressourcen, sei es Speicher, Dateien oder Sockets, ist zentral für die Programmierung in C++. Das gilt insbesondere für die embedded Programmierung, da sich diese gerne durch eingeschränkte Ressourcen auszeichnet. Daher will ich mir diesem vielschichtigen und anspruchsvollen Thema in mehreren Artikeln widmen.

Weiterlesen...
Kommentare 1Gelesen: 1795

Abonniere den Newsletter (+ pdf Päckchen)

Beiträge-Archiv

Sourcecode

Neuste Kommentare