Heim >Backend-Entwicklung >C++ >Haben String-Literale mit demselben Inhalt garantiert dieselbe Adresse in verschiedenen Übersetzungseinheiten?
Konsistenz von Zeichenfolgenliteraladressen über Übersetzungseinheiten hinweg
Frage:
Ist die Annahme zuverlässig? dass String-Literale mit demselben Inhalt in verschiedenen Übersetzungseinheiten (z. B. verschiedenen Quelldateien) dieselbe Speicheradresse haben?
Antwort:
Nein, ich verlasse mich auf String Literaladressen, die über Übersetzungseinheiten hinweg konsistent sein müssen, sind nicht portierbar und gelten als nicht spezifiziertes Verhalten.
Die C- und C-Standards besagen, dass es durch die Implementierung definiert ist, ob Zeichenfolgenliterale mit demselben Inhalt unterschiedliche Speicherorte belegen oder nicht. Das bedeutet, dass verschiedene Compiler oder Laufzeitumgebungen String-Literale möglicherweise unterschiedlich behandeln und ihnen möglicherweise unterschiedliche Speicheradressen zuweisen.
Implikationen:
Optionen:
Wenn Sie konsistente String-Literaladressen innerhalb derselben Übersetzungseinheit (d. h. einer einzelnen Quelldatei) benötigen, bieten einige Compiler Optionen wie:
Hinweis:
Das obige ist der detaillierte Inhalt vonHaben String-Literale mit demselben Inhalt garantiert dieselbe Adresse in verschiedenen Übersetzungseinheiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!