weak_ptr, make_shared und Speicherfreigabe
Ein Steuerblock einesshared_ptr
wird am Leben erhalten, solange mindestens ein @ vorhanden iweak_ptr
Geschenk. Wenn der gemeinsame Zeiger mit @ erstellt wurmake_shared
bedeutet, dass der gesamte Speicher des Objekts reserviert bleibt. (Das Objekt selbst ist ordnungsgemäß zerstört, aber da der Steuerblock und der Speicher für das Objekt in einem Block zugeordnet wurden, alsmake_shared
tut, können sie nur gemeinsam freigegeben werden.)
Ist mein Verständnis korrekt?
Es scheint, dass dieses Verhalten ein Problem darstellt, zum Beispiel in der berühmten "cache example". Der Speicher für die Objekte wird für immer reserviert.
It es ein Problem in irgendwelchen praktischen Situationen? Soll dasshared_ptr
in einer solchen Situation mit einem Konstruktor erstellt werden (großes Objekt und Verwendungsabsichtweak_ptr
s)?