Maison > Article > développement back-end > Pourquoi n'y a-t-il pas de spécialisation std::shared_ptr en C ?
std::shared_ptr
La bibliothèque standard C contient une spécialisation de std::unique_ptr pour les tableaux, qui appelle correctement delete[] depuis son destructeur. Cependant, une spécialisation similaire est notamment absente pour std::shared_ptr. Ce comportement oblige les utilisateurs à fournir manuellement un outil de suppression qui appelle explicitement delete[].
Cette omission est-elle un oubli ou intentionnelle ?
Raison de l'absence
Le groupe de travail sur la bibliothèque C (LWG) a envisagé la possibilité d'un std::shared_ptr
Plus précisément, les opérations arithmétiques sur std::shared_ptr
Développements récents
De manière informelle, le sujet a de nouveau gagné du terrain au sein du LWG, et un prototype a été développé. Bien que cette fonctionnalité ait le potentiel de devenir un outil précieux, son inclusion dans la norme reste incertaine.
Statut actuel
À partir de C 11, une norme : shared_ptr
Mise à jour (2017)
La norme C 17 inclut la prise en charge pour les tableaux dans std::shared_ptr (cas 3 de shared_ptr::shared_ptr()).
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!