Sobes.tech
Middle

Lo shared_ptr ha solo un contatore di riferimenti o più di uno?

sobes.tech AI

Risposta dell'AI

// shared_ptr utilizza un contatore di riferimenti condiviso,
// che viene memorizzato nel blocco di controllo.
// Questo blocco di controllo contiene anche informazioni sul delete dell'utente (deleter)
// e sull'allocator dell'utente, se forniti durante la creazione di shared_ptr.

// Ogni copia di shared_ptr che punta allo stesso oggetto,
// fa riferimento a questo unico blocco di controllo e incrementa/decrementa
// il contatore condiviso durante la copia/eliminazione.

// Oltre al contatore di riferimenti condiviso per shared_ptr,
// il blocco di controllo contiene anche un contatore di riferimenti deboli (weak count)
// per i puntatori deboli (weak_ptr) che puntano allo stesso oggetto.

// Pertanto, per ogni oggetto gestito da shared_ptr,
// esiste solo un contatore di riferimenti forti (per shared_ptr) e uno di riferimenti deboli (per weak_ptr),
// memorizzati in un unico blocco di controllo.