Sobes.tech
Middle

Un shared_ptr are doar un contor de referințe sau mai multe?

sobes.tech AI

Răspuns de la AI

// shared_ptr utilizează un contor de referințe partajat,
// care este stocat în blocul de control.
// Acest bloc de control conține, de asemenea, informații despre delete-ul utilizatorului (deleter)
// și allocatorul utilizatorului, dacă au fost furnizate la crearea shared_ptr.

// Fiecare copie de shared_ptr care indică același obiect,
// face referire la acest singur bloc de control și incrementează/decrementează
// contorul comun la copiere și ștergere.

// Pe lângă contorul comun de referințe pentru shared_ptr,
// blocul de control conține, de asemenea, un contor de referințe slabe (weak count)
// pentru pointerii slabi (weak_ptr) care indică același obiect.

// Astfel, pentru fiecare obiect gestionat de shared_ptr,
// există doar un singur contor de referințe puternice (pentru shared_ptr) și unul de referințe slabe (pentru weak_ptr),
// stocate într-un singur bloc de control.