我编写了一个 C 程序,获取环境变量的名称并打印出它的内存地址,只需使用getenv(
) 函数来完成这项工作。假设我想要 PATH --> ./test PATH 的地址位置。但是当我在 gdb 中调试该程序时,该变量的内存位置是不同的。你能详细解释一下为什么会有这样的不同吗?
更准确地说:
./test PATH
--> 0xbffffd96
在 gdb 中调试 --> 0xbffffd53
[编辑] 感谢您的解释。我真正关心的是,变量(在本例中为环境变量)的内存地址如何随着不同的程序而变化。例如,我有 2 个程序 a.out 和 b.out
./a.out
--> PATH 的地址是一些数字
./b.out
--> 另一个号码
那么,是什么导致了两个数字之间的这种差异?我希望我已经清楚地表明了我想问的问题。谢谢小伙伴。