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!