@Anvario0

Почему программа загружается в разных областях памяти?

На данный момент изучаю указатели на C++. Было сказано, что если просто передать имя указателя, то он вернёт адрес памяти, на который ссылается, при чём каждый раз разный, так как программа загружается в различных областях памяти. В связи с чем у меня возник вопрос, почему? Почему программа каждый раз занимает различные области памяти? Ведь даже если между запусками программы проходит секунда, место, занимаемое ею, всё равно меняется.
  • Вопрос задан
  • 245 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему программа каждый раз занимает различные области памяти?

Потому что современные ОС делают это намеренно, чтобы затруднить эксплуатацию уязвимостей в ПО. Это называется ASLR: address space layout randomization. Обычно есть способ отключить ASLR глобально либо для отлаживаемых программ, чтобы добиться воспроизводимости результатов.
Так, например, в linux это делается глобально с помощью файла /proc/sys/kernel/randomize_va_space либо командой setarch -R для одного конкретного процесса. Отладчик gdb по умолчанию отключает ASLR для отлаживаемых программ.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы