C ++ raw pointer und std :: shared_ptr

Ich arbeite mitstd::shared_ptr und während meiner Softwareentwicklung habe ich einige Fälle kennengelernt, bei denen ich Zweifel an der Speicherverwaltung hatte. Ich hatte eine Bibliothek von Drittanbietern, die mir immer rohe Zeiger von Funktionen gab, und in meinem Code habe ich sie in umgewandeltstd::shared_ptr (Von Standard und nicht von Boost. Übrigens, was ist der Unterschied zwischen den beiden?). Angenommen, ich habe den folgenden Code:

ClassA* raw = new ClassA;
std::shared_ptr<ClassA> shared(raw);

Was passiert jetzt, wenn der gemeinsame Zeiger den Gültigkeitsbereich verlässt (sagen wir, er wurde lokal in einer Funktion deklariert und jetzt verlasse ich die Funktion)? Wird dieClassA Objekt existiert noch, weil ein roher Zeiger darauf zeigt?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage