Я пишу C-программу, получаю имя переменной среды и распечатываю ее адрес памяти, просто использую функцию getenv(
) для выполнения этой работы. Допустим, я хочу иметь адрес местоположения PATH -> ./test PATH. Но когда я отлаживаю эту программу в gdb, расположение этой переменной в памяти отличается. Не могли бы вы подробно объяснить, почему существует такая разница?
Точнее:
./test PATH
-> 0xbffffd96
отладка в gdb -> 0xbffffd53
[править] Спасибо за ваши объяснения. На самом деле я спрашиваю о том, как адрес памяти переменной (в данном случае переменной среды) изменяется в разных программах. Например у меня 2 программы a.out и b.out
./a.out
-> адрес PATH - это некоторое число
./b.out
-> другой номер
Итак, что вызывает эту разницу между 2 числами? Надеюсь, я четко продемонстрировал то, что хочу спросить. Спасибо товарищи.