std :: unique_ptr ist ein intelligenter Zeiger, der über einen Zeiger das alleinige Eigentum an einem Objekt behält. unique_ptr kann nicht kopiert oder kopiert werden. Zwei Instanzen von unique_ptr können nicht dasselbe Objekt verwalten.
Soweit ich weiß, wurde C ++ 14 eingeführt std::make_unique, da dies aufgrund der nicht angegebenen Reihenfolge der Parameterauswertung unsicher war: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Erläuterung: Wenn die Auswertung zuerst den Speicher für den Rohzeiger zuweist, dann aufruft g()und vor der std::unique_ptrKonstruktion eine Ausnahme ausgelöst wird , geht der …
Ich versuche zu verstehen, wie es std::unique_ptrfunktioniert und dafür habe ich dieses Dokument gefunden. Der Autor geht von folgendem Beispiel aus: #include <utility> //declarations of unique_ptr using std::unique_ptr; // default construction unique_ptr<int> up; //creates an empty object // initialize with an argument unique_ptr<int> uptr (new int(3)); double *pd= new double; …
Ich versuche, das folgende Thread-Pool-Programm zu kompilieren, das bei der Codeüberprüfung veröffentlicht wurde, um es zu testen. /codereview/55100/platform-independant-thread-pool-v4 Aber ich bekomme die Fehler threadpool.hpp: In member function ‘std::future<decltype (task((forward<Args>)(args)...))> threadpool::enqueue_task(Func&&, Args&& ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique<task_package_impl<R, decltype(bound_task)>> (std::move(bound_task), std::move(promise)); ^ threadpool.hpp:94:81: …
Ich schaue mir Chandler Carruths Vortrag auf der CppCon 2019 an: Es gibt keine kostengünstigen Abstraktionen Darin gibt er das Beispiel, wie er überrascht war, wie viel Aufwand Ihnen durch die Verwendung eines std::unique_ptr<int>Over-An entsteht int*. Dieses Segment beginnt ungefähr zum Zeitpunkt 17:25. Sie können sich die Kompilierungsergebnisse seines Beispiel-Snippet-Paares …
Ich habe meinen ersten Versuch, C ++ 11 zu verwenden unique_ptr. Ich ersetze einen polymorphen Rohzeiger in einem meiner Projekte, das einer Klasse gehört, aber ziemlich häufig herumgereicht wird. Früher hatte ich Funktionen wie: bool func(BaseClass* ptr, int other_arg) { bool val; // plain ordinary function that does something... return …
Wird auto_ptr im eingehenden C ++ - Standard veraltet sein? Sollte unique_ptr anstelle von shared_ptr für die Eigentumsübertragung verwendet werden? Wenn unique_ptr nicht im Standard enthalten ist, muss ich stattdessen shared_ptr verwenden?
Wird unique_ptrgarantiert nullptrnach dem Umzug gespeichert ? std::unique_ptr<int> p1{new int{23}}; std::unique_ptr<int> p2{std::move(p1)}; assert(!p1); // is this always true?
Was ist der richtige Weg, um ein unique_ptr zu erstellen, das ein Array enthält, das dem freien Speicher zugewiesen ist? Visual Studio 2013 unterstützt dies standardmäßig, aber wenn ich gcc Version 4.8.1 unter Ubuntu verwende, treten Speicherlecks und undefiniertes Verhalten auf. Das Problem kann mit diesem Code reproduziert werden: #include …
Ich habe den folgenden Code geschrieben, der verwendet, unique_ptr<Derived>wo a unique_ptr<Base>erwartet wird class Base { int i; public: Base( int i ) : i(i) {} int getI() const { return i; } }; class Derived : public Base { float f; public: Derived( int i, float f ) : Base(i), …
Um void *eine Funktion von einer Funktion in CI zu erhalten, gehen Sie wie folgt vor (sehr einfaches Beispiel): void *get_ptr(size_t size) { void *ptr = malloc(size); return ptr; } Wie erreiche ich das gleiche Ergebnis bei der Verwendung std::unique_ptr<>?
Ich habe es mit Code zu tun, der nicht von mir geschrieben wurde. Ich habe diese Aussage: // p is type of std::unique_ptr<uint8_t[]> if (p < 0) { /* throw an exception */ } Was bedeutet p < 0das in diesem Zusammenhang? Auf der Dokumentationsseite glaube ich, dass mein Fall …
Ich habe eine Methode, die ein Objekt nach Wert zurückgibt. Die Methode stammt aus einer Bibliothek, über die ich keine Kontrolle habe. Für die weitere Bearbeitung des Objekts möchte ich weiterhin mit einem unique_ptr an diesem Objekt arbeiten. Hier ist ein Beispiel: #include <iostream> #include <memory> class Bla { public: …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.