Quali sono le differenze tra i puntatori condivisi (come boost :: shared_ptr o il nuovo std :: shared_ptr) e i metodi di raccolta dei rifiuti (come quelli implementati in Java o C#)? Per come la capisco, i puntatori condivisi tengono traccia di quante volte le variabili puntano alla risorsa e automaticamente distruggono la risorsa quando il conteggio raggiunge lo zero. Tuttavia, la mia comprensione è che il garbage collector gestisce anche le risorse di memoria, ma richiede risorse aggiuntive per determinare se un oggetto è ancora riferito e non necessariamente distrugge immediatamente la risorsa.Garbage Collection e puntatori condivisi
Sono corretto nelle mie ipotesi e ci sono altre differenze tra l'uso di garbage collector e i puntatori condivisi? Inoltre, perché mai qualcuno avrebbe mai usato un garbage collector su un puntatore condiviso se svolgevano attività simili ma con valori prestazionali variabili?
L'utilizzo di puntatori condivisi ** è ** una tecnica di garbage collection. Molti garbage collector implementano, almeno come primo passo, il conteggio dei riferimenti. –