Cohérence des adresses littérales de chaîne entre les unités de traduction
Question :
Est-il fiable de supposer que les chaînes littérales avec le même contenu auront la même adresse mémoire dans différentes unités de traduction (par exemple, différents fichiers source) ?
Réponse :
Non, en s'appuyant sur la chaîne Les adresses littérales devant être cohérentes entre les unités de traduction ne sont pas portables et sont considérées comme un comportement non spécifié.
Les normes C et C indiquent qu'il est défini par l'implémentation si les chaînes littérales avec le même contenu occuperont ou non des emplacements de mémoire distincts. Cela signifie que différents compilateurs ou environnements d'exécution peuvent gérer différemment les littéraux de chaîne, leur attribuant potentiellement différentes adresses mémoire.
Implications :
Options :
Si vous avez besoin d'adresses littérales de chaîne cohérentes au sein de la même unité de traduction (c'est-à-dire un fichier source unique), certains compilateurs proposent des options telles que :
Remarque :
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!