Als «shared-ptr» getaggte Fragen

Referenzgezählte Smart-Pointer-Klasse, die Shared Ownership implementiert


4
Übergeben von shared_ptr <Derived> als shared_ptr <Base>
Was ist die beste Methode, um shared_ptreinen abgeleiteten Typ an eine Funktion zu übergeben, die shared_ptreinen Basistyp verwendet? Ich übergebe im Allgemeinen shared_ptrs als Referenz, um eine unnötige Kopie zu vermeiden: int foo(const shared_ptr&lt;bar&gt;&amp; ptr); aber das funktioniert nicht, wenn ich versuche, so etwas zu tun int foo(const shared_ptr&lt;Base&gt;&amp; ptr); …

5
Gemeinsame Zeiger als Argumente übergeben
Wenn ich ein Objekt deklariere, das in einen gemeinsamen Zeiger eingeschlossen ist: std::shared_ptr&lt;myClass&gt; myClassObject(new myClass()); dann wollte ich es als Argument an eine Methode übergeben: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr&lt;myClass&gt; arg1) { arg1-&gt;someField = 4; } Erhöht das oben Gesagte einfach die Referenzanzahl von shared_pt und alles ist cool? …


2
Was ist der Unterschied zwischen einem leeren und einem null std :: shared_ptr in C ++?
Auf der Seite cplusplus.comshared_ptr wird zwischen einer leeren std::shared_ptr und einer Null unterschieden shared_ptr . Die Seite cppreference.com ruft die Unterscheidung nicht explizit auf, sondern verwendet nullptrin ihrer Beschreibung des std::shared_ptrVerhaltens sowohl "leer" als auch Vergleich mit . Gibt es einen Unterschied zwischen einer leeren und einer Null shared_ptr? Gibt …
80 c++  c++11  shared-ptr 

5
geteilte_ptr und schwache_ptr Unterschiede
Ich lese Scott Meyers "Effective C ++" Buch. Es wurde erwähnt, dass es eingebaute Zeiger gibt tr1::shared_ptrund tr1::weak_ptrsich wie diese verhält, aber sie verfolgen, wie viele tr1::shared_ptrsauf ein Objekt zeigen. Dies wird als Referenzzählung bezeichnet. Dies funktioniert gut, um Ressourcenlecks in azyklischen Datenstrukturen zu verhindern. Wenn jedoch zwei oder mehr …

4
static_cast mit boost :: shared_ptr?
Was ist das Äquivalent von a static_castmit boost::shared_ptr? Mit anderen Worten, wie muss ich Folgendes umschreiben? Base* b = new Derived(); Derived* d = static_cast&lt;Derived*&gt;(b); bei der Verwendung shared_ptr? boost::shared_ptr&lt;Base&gt; b(new Derived()); boost::shared_ptr&lt;Derived&gt; d = ???

3
Wird der Deleter eines shared_ptr im vom benutzerdefinierten Allokator zugewiesenen Speicher gespeichert?
Angenommen, ich habe eine shared_ptrmit einem benutzerdefinierten Allokator und einem benutzerdefinierten Löscher. Ich kann im Standard nichts finden, das darüber spricht, wo der Deleter gespeichert werden soll: Es heißt nicht, dass der benutzerdefinierte Allokator für den Speicher des Deleters verwendet wird, und es heißt nicht, dass dies nicht der Fall …

1
Wo ist das Rennen in diesem Thread Sanitzer Warnung?
Der folgende Code erzeugt eine Warnung, wenn er mit Thread Sanitizer unter macOS ausgeführt wird. Ich kann nicht sehen, wo das Rennen ist. Der Steuerblock von shared_ptr und schwach_ptr ist threadsicher, und das Drücken und Herausspringen von wird durch Halten std::queueeiner Sperre erfolgen. #include &lt;future&gt; #include &lt;memory&gt; #include &lt;queue&gt; class …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.