Comme je peux le constater, les pointeurs intelligents sont largement utilisés dans de nombreux projets C ++ réels.
Bien que certains pointeurs intelligents soient évidemment bénéfiques pour prendre en charge la RAII et les transferts de propriété, il existe également une tendance à utiliser des pointeurs partagés par défaut , comme moyen de "ramasser les ordures" , afin que le programmeur n'ait pas à réfléchir autant à l'allocation. .
Pourquoi les pointeurs partagés sont-ils plus populaires que l'intégration d'un bon ramasse-ordures comme Boehm GC ? (Ou êtes-vous d'accord pour dire qu'ils sont plus populaires que les GC actuels?)
Je connais deux avantages des CPG classiques par rapport au comptage de références:
- Les algorithmes GC conventionnels ne posent aucun problème avec les cycles de référence .
- Le nombre de références est généralement plus lent qu'un GC correct.
Quelles sont les raisons d'utiliser des pointeurs intelligents de comptage de références?
std::unique_ptr
est suffisant et, en tant que tel, ne génère aucun point brut sur les pointeurs bruts en termes de performances d'exécution. En utilisantstd::shared_ptr
partout, vous masqueriez également la sémantique de la propriété, perdant ainsi l'un des principaux avantages des pointeurs intelligents autres que la gestion automatique des ressources: une compréhension claire de l'intention du code.