Middle
Czy shared_ptr ma tylko jeden licznik referencji, czy ich kilka?
sobes.tech AI
Odpowiedź od AI
// shared_ptr używa wspólnego licznika odwołań,
// który jest przechowywany w bloku kontrolnym.
// Ten blok kontrolny zawiera również informacje o delete użytkownika (deleter)
// i alokatorze użytkownika, jeśli zostały podane podczas tworzenia shared_ptr.
// Każda kopia shared_ptr wskazująca na ten sam obiekt,
// odwołuje się do tego samego bloku kontrolnego i inkrementuje/dekrementuje
// wspólny licznik podczas kopiowania/usuwania.
// Oprócz wspólnego licznika odwołań dla shared_ptr,
// blok kontrolny zawiera również licznik słabych odwołań (weak count)
// dla słabych wskaźników (weak_ptr), wskazujących na ten sam obiekt.
// W związku z tym, dla każdego obiektu zarządzanego przez shared_ptr,
// istnieje tylko jeden licznik silnych odwołań (dla shared_ptr) i jeden licznik słabych odwołań (dla weak_ptr),
// przechowywane w jednym bloku kontrolnym.