Einführung in Schwache Zeiger
Der Smart Pointer std::weak_ptr
besitzt nicht das Objekt, auf das er zeigt. Das bedeutet im Wesentlichen, dass ein Weak Pointer die Referenzanzahl des Objekts nicht erhöht.
Ein std::weak_ptr
ermöglicht den Zugriff auf ein von Shared Pointern verwaltetes Objekt, ohne dessen Lebensdauer zu verlängern. Wenn alle Shared Pointer außer Gültigkeit geraten, wird das Objekt gelöscht, selbst wenn noch ein Weak Pointer existiert. Dies ist nützlich, um Shared Objekte zu beobachten, ohne deren Freigabe zu verhindern.
main.cpp
12345678910111213141516171819#include <iostream> #include <memory> struct Resource { Resource() { std::cout << "Resource created\n"; } ~Resource() { std::cout << "Resource destroyed\n"; } }; int main() { std::shared_ptr<Resource> sp1 = std::make_shared<Resource>(); std::weak_ptr<Resource> wp = sp1; // Weak pointer does not increase ref count std::cout << "Shared pointer going out of scope...\n"; sp1.reset(); // Resource is deleted if (wp.expired()) std::cout << "Resource no longer exists\n"; }
Der Lebenszyklus eines Weak Pointers
Weak Pointers sind Beobachter, sie können auf ein Objekt zugreifen, aber verlängern dessen Lebensdauer nicht.
Ihr Lebenszyklus hängt von Shared Pointers ab. Wenn der letzte Shared Pointer zerstört wird, wird das Objekt freigegeben, und der Weak Pointer läuft ab. Er existiert weiterhin, wird aber leer.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 5.56
Einführung in Schwache Zeiger
Swipe um das Menü anzuzeigen
Der Smart Pointer std::weak_ptr
besitzt nicht das Objekt, auf das er zeigt. Das bedeutet im Wesentlichen, dass ein Weak Pointer die Referenzanzahl des Objekts nicht erhöht.
Ein std::weak_ptr
ermöglicht den Zugriff auf ein von Shared Pointern verwaltetes Objekt, ohne dessen Lebensdauer zu verlängern. Wenn alle Shared Pointer außer Gültigkeit geraten, wird das Objekt gelöscht, selbst wenn noch ein Weak Pointer existiert. Dies ist nützlich, um Shared Objekte zu beobachten, ohne deren Freigabe zu verhindern.
main.cpp
12345678910111213141516171819#include <iostream> #include <memory> struct Resource { Resource() { std::cout << "Resource created\n"; } ~Resource() { std::cout << "Resource destroyed\n"; } }; int main() { std::shared_ptr<Resource> sp1 = std::make_shared<Resource>(); std::weak_ptr<Resource> wp = sp1; // Weak pointer does not increase ref count std::cout << "Shared pointer going out of scope...\n"; sp1.reset(); // Resource is deleted if (wp.expired()) std::cout << "Resource no longer exists\n"; }
Der Lebenszyklus eines Weak Pointers
Weak Pointers sind Beobachter, sie können auf ein Objekt zugreifen, aber verlängern dessen Lebensdauer nicht.
Ihr Lebenszyklus hängt von Shared Pointers ab. Wenn der letzte Shared Pointer zerstört wird, wird das Objekt freigegeben, und der Weak Pointer läuft ab. Er existiert weiterhin, wird aber leer.
Danke für Ihr Feedback!