我編寫一個C程序獲取一個環境變量的名字並打印出它的內存地址,只需使用getenv(
)函數來完成這項工作。假設我想要PATH的地址位置 - > ./test PATH。但是,當我在gdb中調試該程序時,該變量的內存位置不同。你能詳細解釋爲什麼會有這樣的不同?爲什麼運行程序時環境變量的內存地址有所不同
更確切地說:
./test PATH
- > 0xbffffd96
調試在gdb - > 0xbffffd53
[編輯]謝謝你的解釋。我真正質疑的是,變量的內存地址(在本例中是一個環境變量)如何隨着不同的程序而改變。例如,我有2個程序a.out,並B.OUT
./a.out
- > PATH的地址是一些數字
./b.out
- >另一個號碼
那麼,是什麼原因導致2號之間的差異?我希望我已經清楚地表明我想問什麼。感謝隊友。
對不起,我的模糊的例子。在我的程序中應該是這樣的:printf(「%p」,getenv(「PATH」))例如 – wakandan 2009-07-09 09:45:29
您的問題並不含糊。我明白你問的是內存地址(「%p」)。但是,正如其他人所說,你不應該在意這一點。 – 2009-07-09 11:57:08