Sobes.tech
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.