@Anvario0

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

На данный момент изучаю указатели на C++. Было сказано, что если просто передать имя указателя, то он вернёт адрес памяти, на который ссылается, при чём каждый раз разный, так как программа загружается в различных областях памяти. В связи с чем у меня возник вопрос, почему? Почему программа каждый раз занимает различные области памяти? Ведь даже если между запусками программы проходит секунда, место, занимаемое ею, всё равно меняется.
  • Вопрос задан
  • 239 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Почему программа каждый раз занимает различные области памяти?

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

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

Войти через центр авторизации
Похожие вопросы