環境変数の名前を取得する C プログラムを作成し、そのメモリ アドレスを出力します。単純にgetenv(
) 関数を使用してジョブを実行します。PATHのアドレスの場所が欲しいとしましょう-> ./test PATH。しかし、gdb でそのプログラムをデバッグすると、その変数のメモリ位置が異なります。なぜこんなに違うのか、詳しく説明していただけますか?
より正確には:
./test PATH
--> 0xbffffd96
gdb でデバッグ --> 0xbffffd53
[編集] ご説明ありがとうございます。私が実際に疑問に思っているのは、変数 (この場合は環境変数) のメモリ アドレスが異なるプログラムでどのように変化するかということです。たとえば、a.out と b.out という 2 つのプログラムがあります。
./a.out
--> PATH のアドレスは数字です
./b.out
--> 別の番号
では、この 2 つの数値の違いの原因は何ですか? 聞きたいことが明確に示されていることを願っています。ありがとう仲間。