Maison > développement back-end > C++ > Quand Placement-New doit-il être utilisé avec `reinterpret_cast` pour créer des objets trivialement constructibles par défaut ?

Quand Placement-New doit-il être utilisé avec `reinterpret_cast` pour créer des objets trivialement constructibles par défaut ?

Susan Sarandon
Libérer: 2024-12-06 16:14:23
original
378 Les gens l'ont consulté

When Must Placement-New Be Used with `reinterpret_cast` to Create Trivially Default-Constructible Objects?

Reinterpret_cast et la création d'objets trivialement constructibles par défaut

cppreference utilisé pour affirmer que reinterpret_cast pourrait être utilisé pour créer des objets trivialement constructibles par défaut sur un stockage convenablement aligné. Cependant, cette affirmation a depuis été corrigée pour indiquer que le placement-nouveau est requis dans de tels cas pour introduire formellement un objet et éviter un comportement indéfini.

Quand commence la durée de vie de l'objet ?

Compte tenu de cette correction, il est clair que aucun objet X n'existe dans le code fourni. Par conséquent, toute tentative d'accès à ses membres (par exemple, reinterpret_cast>(buffer)->x = 42;) entraîne un comportement indéfini.

Le rôle d'alignas()

Le spécificateur alignas() garantit que le stockage est correctement aligné pour contenir un X. Cela ne crée pas d'objet X. S'il y avait une branche entre la déclaration alignas() et reinterpret_cast, cela ne changerait rien au fait qu'aucun objet X n'existe.

Changements dans les normes C

L'interprétation de ce comportement est restée cohérente entre C 11 et C1z. Le concept de création d'objets sans construction explicite via reinterpret_cast n'est pris en charge dans aucune des deux normes.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal