変換単位間の文字列リテラル アドレスの一貫性
質問:
と仮定することは信頼できますか同じ内容の文字列リテラルは、異なる翻訳単位 (異なるソース ファイルなど) にわたって同じメモリ アドレスを持ちますか?
答え:
いいえ、文字列に依存します。翻訳単位間で一貫性のあるリテラル アドレスは移植性がなく、未指定の動作とみなされます。
C および C 標準では、同じ内容の文字列リテラルが別個のメモリ位置を占有するかどうかは実装定義であると規定されています。これは、コンパイラやランタイム環境が異なると文字列リテラルの処理方法が異なり、文字列リテラルにさまざまなメモリ アドレスが割り当てられる可能性があることを意味します。
影響:
オプション:
同じ翻訳単位 (つまり、単一のソース ファイル) 内で一貫した文字列リテラル アドレスが必要な場合、一部のコンパイラは次のようなオプションを提供します。
注:
以上が同じ内容の文字列リテラルは、異なる変換単位でも同じアドレスを持つことが保証されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。