Sobes.tech
Middle

Heeft een shared_ptr slechts één referentieteller of meerdere?

sobes.tech AI

Antwoord van AI

// shared_ptr gebruikt een gedeelde referentieteller,
// die wordt opgeslagen in het controleblok.
// Dit controleblok bevat ook informatie over de delete (deleter)
// en de allocator van de gebruiker, indien deze zijn opgegeven bij het aanmaken van shared_ptr.

// Elke kopie van shared_ptr die naar hetzelfde object wijst,
// verwijst naar dit enige controleblok en verhoogt/verlaagt
// de gedeelde teller bij kopiëren/verwijderen.

// Naast de gedeelde referentieteller voor shared_ptr,
// bevat het controleblok ook een zwakke referentieteller (weak count)
// voor zwakke pointers (weak_ptr) die naar hetzelfde object wijzen.

// Dus, voor elk object dat wordt beheerd door shared_ptr,
// bestaat slechts één sterke referentieteller (voor shared_ptr) en één zwakke referentieteller (voor weak_ptr),
// opgeslagen in één controleblok.