Middle
Má shared_ptr iba jeden počítadlo odkazov alebo viac?
sobes.tech AI
Odpoveď od AI
// shared_ptr používa spoločný čítač odkazov,
// ktorý je uložený v riadiacom bloku.
// Tento riadiaci blok tiež obsahuje informácie o delete používateľa (deleter)
// a používateľskom alokátore, ak boli poskytnuté pri vytváraní shared_ptr.
// Každá kópia shared_ptr, ktorá odkazuje na ten istý objekt,
// odkazuje na tento jediný riadiaci blok a zvyšuje/znižuje
// spoločný čítač pri kopírovaní/mazaní.
// Okrem spoločného čítača odkazov pre shared_ptr,
// riadiaci blok obsahuje aj čítač slabých odkazov (weak count)
// pre slabé ukazovatele (weak_ptr), ktoré odkazujú na ten istý objekt.
// Takže pre každý objekt spravovaný shared_ptr,
// existuje len jeden silný čítač odkazov (pre shared_ptr) a jeden slabý čítač odkazov (pre weak_ptr),
// uložené v jednom riadiacom bloku.