Middle
Egy shared_ptr-nek csak egy hivatkozásszámlálója van, vagy több?
sobes.tech MI
Válasz az MI-től
// shared_ptr egy közös hivatkozásszámlálót használ,
// amely a vezérlő blokkban van tárolva.
// Ez a vezérlő blokk tartalmazza továbbá a felhasználói delete-et (deleter)
// és a felhasználói allocator-t, ha azokat a shared_ptr létrehozásakor megadták.
// Minden másolat, amely ugyanarra a objektumra mutat,
// erre a egyetlen vezérlő blokkra hivatkozik, és növeli/csökkenti
// a közös számlálót másolás/eltávolítás során.
// A shared_ptr közös hivatkozásszámlálóján kívül,
// a vezérlő blokk tartalmaz egy gyenge hivatkozásszámlálót (weak count)
// a gyenge mutatók (weak_ptr) számára, amelyek ugyanarra az objektumra mutatnak.
// Így minden, a shared_ptr által kezelt objektumhoz,
// csak egy erős hivatkozásszámláló (shared_ptr számára) és egy gyenge hivatkozásszámláló (weak_ptr számára) tartozik,
// amelyek egyetlen vezérlő blokkban vannak tárolva.