Quand utiliser différents types de pointeurs en C
En C, différents types de pointeurs sont disponibles pour gérer la propriété et la durée de vie des objets. Cet article fournit des conseils sur le choix du type de pointeur approprié pour différents scénarios, notamment la propriété partagée, la propriété unique et la non-propriété.
Propriété partagée :
- std::shared_ptr : à utiliser lorsque plusieurs objets doivent partager la propriété d'une ressource et qu'il n'est pas clair quel objet sera le dernier à utilisez-le.
-
std::weak_ptr : À utiliser pour observer une ressource sans influencer sa durée de vie. Évitez de l'utiliser pour rompre les cycles de référence entre shared_ptrs.
Propriété unique :
-
std::unique_ptr : valeur par défaut choix pour les pointeurs intelligents où un seul objet possède une ressource. Il permet de personnaliser la suppression d'objets via un argument de modèle de suppression.
-
boost::intrusive_ptr : Une option légère lorsque la ressource propose déjà une gestion par références.
Aucune propriété :
-
Brut Pointeurs (T*) : à utiliser pour les références non propriétaires à des ressources connues pour survivre à l'objet de référence ou pour la nullité et la réinitialisation.
-
Références : préférées pour les valeurs non nulles et non nulles. -posséder des références à des ressources.
Supplémentaire Notes :
-
std::auto_ptr : obsolète en C 11 ; remplacé par std::unique_ptr.
-
Boost::shared_array et boost::scoped_array : Alternatives à std::unique_ptr> ; const> et std::unique_ptr, respectivement.
- Pour les scénarios d'exécution simultanée, expired() doit être utilisé avec prudence pour éviter les conditions de concurrence lors de la vérification de l'activité des ressources :
if(!wptr.expired()) {
// Potential race condition
something_assuming_the_resource_is_still_alive();
}
Copier après la connexion
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!