Verfügbare C-Smart-Pointer-Implementierungen und ihre Vergleiche
C 03
-
std::auto_ptr: In zukünftigen C-Standards veraltet. Eingeschränkte Speicherbereinigung, Eigentumskomplikationen und Unfähigkeit zur Verwendung in STL-Containern.
-
std::auto_ptr_ref: Kein echter Smart Pointer; Wird in Verbindung mit std::auto_ptr verwendet, um Kopieren und Zuweisen zu ermöglichen.
C 11
-
std::unique_ptr: Ersetzt std::auto_ptr. Korrigiert Schwachstellen von std::auto_ptr und ermöglicht die Arbeit mit Arrays, Lvalue-Schutz und die Verwendung in STL-Containern.
-
std::shared_ptr: Smart Pointer mit Referenzzählung. Unterstützt Aliasing und Zeigerarithmetik.
-
std::weak_ptr: Nicht besitzender Verweis auf ein Objekt, das einem std::shared_ptr gehört. Verhindert unbegrenzte zyklische Referenzzählungen.
Boost
-
boost::shared_ptr: Beliebter gemeinsamer intelligenter Zeiger mit Referenzzählung. Hohe Leistung und Vielseitigkeit.
-
boost::weak_ptr: Nicht besitzender Verweis auf einen boost::shared_ptr.
-
boost::scoped_ptr: Einfache Smart-Pointer-Alternative zu boost::shared_ptr mit less Overhead.
-
boost::intrusive_ptr: Benutzerdefinierter Smart Pointer zum Erstellen Ihrer eigenen Smart Pointer-kompatiblen Klassen.
-
boost::shared_array: Geteilt Smart Pointer für Arrays.
-
boost::scoped_array: Nicht kopierbarer intelligenter Zeiger für Arrays.
Qt
-
QPointer: Schwacher intelligenter Zeiger für QObject und abgeleitete Klassen. Veraltet.
-
QSharedDataPointer: Starker intelligenter Zeiger, vergleichbar mit boost::intrusive_ptr, mit Thread-Sicherheit.
-
QExplicitlySharedDataPointer: Version 2.0 von QSharedDataPointer mit erweiterten Kontrolle über Ablösung.
-
QSharedPointer: Atomare Referenzzählung, Thread-sicherer, gemeinsam nutzbarer intelligenter Zeiger.
-
QWeakPointer: Nicht besitzende Referenz auf a QSharedPointer.
-
QScopedPointer: Smart Pointer für einen einzelnen Besitzer basierend auf boost::scoped_ptr, geeignet für ausnahmesicheren Code und Kompatibilität.
Das obige ist der detaillierte Inhalt vonWelchen C Smart Pointer soll ich wählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn