Construction d'un objet trivialement copiable avec memcpy
Lorsqu'ils travaillent avec C , les développeurs peuvent rencontrer des questions concernant la validité de l'utilisation de memcpy pour copier le octets de représentation d’un objet. Plus précisément, un doute surgit quant à savoir si cet acte constitue une construction ou une affectation d'objet.
Cette question reste en suspens, car la norme C n'aborde pas explicitement ce scénario. Cependant, certaines propositions et discussions apportent des orientations en la matière.
Point de vue de la norme officielle
Le projet de norme C 14 actuel stipule que : « Un objet est créé [.. .] par une définition, par une nouvelle expression ou par l'implémentation si nécessaire."
De plus, les clauses existantes traitant de la copie de types copiables triviaux (par exemple, 3.9 [basic.types]) se concentrent principalement sur la copie entre des objets déjà instanciés.
Proposition p0593
La proposition p0593 tente de résoudre ce problème et de définir le création implicite d'objets pour la manipulation d'objets de bas niveau. Il propose que les objets de types suffisamment triviaux soient automatiquement créés dans le stockage nouvellement alloué, garantissant un comportement bien défini.
Selon p0593, les opérations suivantes devraient implicitement créer des objets :
Autres considérations
La discussion sur le jeu de mots [ub] pour éviter la copie souligne davantage la complexité de ce problème. sujet.
Dans l'ensemble, les orientations actuelles sur ce sujet sont sujettes à interprétation, mais des propositions telles que p0593 visent à apporter de la clarté et un comportement défini pour ces opérations.
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!