Middle
Ar shared_ptr turi tik vieną nuorodų skaitiklį ar kelis?
sobes.tech AI
Atsakymas iš AI
// shared_ptr naudoja bendrą nuorodų skaitiklį,
// kuris saugomas valdymo bloke.
// Šis valdymo blokas taip pat turi informaciją apie naudotojo delete (deleter)
// ir naudotojo alokatorių, jei jie buvo pateikti kuriant shared_ptr.
// Kiekviena kopija shared_ptr, rodanti į tą patį objektą,
// nurodo į šį vienintelį valdymo bloką ir padidina/ sumažina
// bendrą skaitiklį kopijuojant/šalinant.
// Be bendro nuorodų skaitiklio shared_ptr,
// valdymo blokas taip pat turi silpnų nuorodų skaitiklį (weak count)
// silpnų rodyklių (weak_ptr), rodančių į tą patį objektą.
// Taigi, kiekvienam objektui, kurį valdo shared_ptr,
// yra tik vienas stiprus nuorodų skaitiklis (shared_ptr) ir vienas silpnas nuorodų skaitiklis (weak_ptr),
// saugomi viename valdymo bloke.