Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Qu'est-ce Que les Pointeurs Partagés ? | Pointeurs Partagés
Pointeurs Intelligents C++
course content

Contenu du cours

Pointeurs Intelligents C++

Pointeurs Intelligents C++

1. Introduction aux Pointeurs Intelligents
2. Pointeurs Uniques
3. Pointeurs Partagés
4. Pointeurs Faibles
5. Références
6. Sujets Avancés

book
Qu'est-ce Que les Pointeurs Partagés ?

Les pointeurs partagés, définis comme std::shared_ptr, sont un autre type de pointeur intelligent qui aide à la gestion automatique de la mémoire. Ils font partie de la bibliothèque standard C++ depuis C++11 et sont un concept fondamental que chaque développeur C++ devrait maîtriser.

Tout comme un pointeur unique, un pointeur partagé est utilisé pour allouer et conserver l'adresse d'un objet alloué dynamiquement. Le principal facteur de différenciation entre les deux types de pointeurs est qu'un pointeur partagé est partageable par conception. Il peut avoir en toute sécurité plus d'un propriétaire. En fait, il ne devrait être utilisé que lorsque vous avez besoin qu'un objet ait plusieurs propriétaires.

Comment fonctionnent les pointeurs partagés ?

Contrairement aux pointeurs uniques, les pointeurs partagés maintiennent un compteur de références. Le compteur de références d'un pointeur partagé suit le nombre de pointeurs partagés qui référencent (possèdent) actuellement le même objet.

Rappelez-vous

Créer un nouveau pointeur partagé pour un objet dynamique définit le compteur de références à 1. Ajouter un autre pointeur partagé augmente le compteur à 2, et ainsi de suite.

De même, lorsqu'un pointeur partagé sort de la portée ou est explicitement réinitialisé, le compteur de références est automatiquement décrémenté. Dès que le compteur de références atteint 0, cela signifie qu'aucun pointeur partagé ne référence plus l'objet, et la mémoire de l'objet est automatiquement désallouée. C'est un moyen infaillible d'assurer une propriété partagée sécurisée des données dynamiques en C++. Car, même lors du partage de données, le programme est moins susceptible aux fuites/corruptions de mémoire, et vous n'avez pas besoin d'appeler manuellement delete.

Un exemple du monde réel

Examinons un cas d'utilisation pratique des pointeurs partagés. Supposons que vous construisiez une application multimédia complexe qui traite de grandes images. Vous avez écrit des dizaines de classes C++ pour gérer efficacement l'analyse et le traitement des fichiers image. Chaque classe a besoin d'accéder aux mêmes données d'image.

La manière la plus sûre de procéder serait d'utiliser des pointeurs partagés. Ils garantiront que la mémoire est automatiquement libérée lorsque aucune des classes n'a plus besoin des données d'image.

Quand le compteur de références d'un pointeur partagé est-il incrémenté ?

Quand le compteur de références d'un pointeur partagé est-il incrémenté ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 1
We're sorry to hear that something went wrong. What happened?
some-alt