Cプログラムを書くと、環境変数の名前が取得され、メモリアドレスが出力されます。単にgetenv(
)関数を使用します。 PATH - > ./test PATHのアドレスの場所を知りたいとしましょう。しかし、gdbでそのプログラムをデバッグすると、その変数のメモリ位置が異なります。そのような違いがある理由を詳細に説明できますか?プログラムを実行しているときに環境変数のメモリアドレスに違いがあるのはなぜですか?
より正確には:
./test PATH
- GDBで> 0xbffffd96
デバッグ - > 0xbffffd53
[編集]あなたの説明をありがとう。私が実際に質問していることは、変数(この場合は環境変数)のメモリアドレスが異なるプログラムによってどのように変わるかです。たとえば、私は2プログラムのa.outを持っていると
./a.out
B.OUT - > PATHのアドレスいくつかの番号がある
./b.out
- > 2つの数の間のこの違いの原因を別の番号ので
、 ?私は何を求めているかを明確に示してくれることを願っています。ありがとうございます。
私のあいまいな例には申し訳ありません。私のプログラムでは、次のようなものがあります:printf( "%p"、getenv( "PATH"))例えば – wakandan
あなたの質問は曖昧ではありませんでした。私はあなたがメモリアドレス( "%p")について質問していることを理解しました。しかし、他の人が言うように、あなたはこれに気を付けるべきではありません。 –