Maison >développement back-end >C++ >Quand les « nouveaux »/« supprimer », les pointeurs bruts et les tableaux de style C sont-ils encore nécessaires dans le C moderne ?

Quand les « nouveaux »/« supprimer », les pointeurs bruts et les tableaux de style C sont-ils encore nécessaires dans le C moderne ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-18 01:58:09175parcourir

When Are `new`/`delete`, Raw Pointers, and C-Style Arrays Still Necessary in Modern C  ?

Dans Modern C, les nouveaux/supprimés, les pointeurs bruts ou les tableaux de style C sont-ils toujours nécessaires ?

Dans la communauté C, un changement de paradigme est en cours, encourageant l'abandon des pratiques traditionnelles de gestion de la mémoire telles que la création/suppression, les pointeurs bruts et les tableaux de style C. Avec l'avènement des pointeurs et des conteneurs intelligents dans la norme C 11, ces approches héritées sont souvent considérées comme obsolètes.

Les pointeurs intelligents ou les conteneurs standard peuvent-ils remplacer les nouveaux/supprimés ?

En dehors de l'implémentation de pointeurs ou de conteneurs intelligents, existe-t-il des cas d'utilisation dans lesquels la création/suppression ne peut pas être remplacée ?

Oui, il existe des cas extrêmes où new/delete offre des avantages spécifiques :

  • Propriété non locale : Si la propriété d'un pointeur ne doit pas être localisée sur le pointeur lui-même, comme dans certaines structures de données comme les listes chaînées ou graphiques.

Tableaux bruts de style C vs. std::array

Des tableaux bruts de style C sont-ils nécessaires lorsque std::array fournit des fonctionnalités similaires ?

Dans de rares scénarios, les tableaux de style C peuvent toujours être préférés :

  • Intégration d'une bibliothèque tierce : Si une bibliothèque tierce renvoie les pointeurs bruts alloués avec new, les envelopper avec des pointeurs intelligents peut ne pas être réalisable.

Interaction avec les pointeurs bruts dans les bibliothèques tierces

Comment pouvons-nous gérer les pointeurs bruts renvoyés par des bibliothèques tierces, garantissant une libération appropriée des ressources ?

Nous pouvons envelopper ces pointeurs dans des pointeurs intelligents, en spécifiant une fonction de suppression personnalisée si nécessaire pour prendre en compte le API de publication de ressources héritées de la bibliothèque.

Pertinence situationnelle

Il est important de noter que ces cas d'utilisation sont des cas extrêmes, rarement rencontrés dans la programmation quotidienne. À des fins pratiques, les installations modernes de gestion de la mémoire C offrent une sécurité et une commodité supérieures.

Conclusion

Bien que la création/suppression, les pointeurs bruts et les tableaux de style C aient une signification historique , leur utilisation en C contemporain est généralement déconseillée. Les pointeurs et conteneurs intelligents offrent des alternatives robustes et maintenables pour la gestion de la mémoire, garantissant la sécurité et la lisibilité du code.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn