Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 29

Почему не меняется адрес в памяти у переменной при перезапуске программы?

30.10.2023, 16:35. Показов 1009. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, недавно наткнулся на тему "указатели", и почему то у ребят на видосах при каждом перезапуске пограммы меняется адрес в памяти у переменной, у меня же он всегда один и тот же, и зависит тольк от того какой по счету была создана переменная (первая, вторая и тд). Код:
C++
1
2
3
4
5
6
7
8
9
10
void main()
{
 
    int a = 10;
 
    int* px = &a;
 
    cout << px << endl; //Всегда одно и то же значение - 000000000014FCF4
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2023, 16:35
Ответы с готовыми решениями:

Почему выводится один и тот же адрес памяти при одновременных запусках одной программы
Здравствуйте, уважаемые программисты У меня к вам такой вопрос: при запуске программы, которая содержит указатель на некую переменную...

Почему меняется белый IP адрес?
Доброго времени суток! Подскажите, пожалуйста, почему при каждом включении сервера меняется &quot;белый&quot; IP адрес? На работе с доп....

Восстанавливать фон при перезапуске программы
у меня есть картики которые можно класть на фон программы я хочу чтобы когда я меняю фон он сохранялся и в следующем открываний программы

16
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.10.2023, 16:40
Почему он должен меняться, если программа одна и та же?
0
0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 29
30.10.2023, 16:43  [ТС]
Не знаю, у людей на видео меняется при каждом запуске этот самый адрес на другой рандомный
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.10.2023, 16:43
Цитата Сообщение от geymer228 Посмотреть сообщение
у ребят на видосах при каждом перезапуске пограммы меняется адрес в памяти у переменной
Ссылку.
0
 Аватар для Tanya2007
593 / 230 / 72
Регистрация: 13.05.2020
Сообщений: 412
30.10.2023, 16:44
Цитата Сообщение от geymer228 Посмотреть сообщение
Доброго времени суток, недавно наткнулся на тему "указатели", и почему то у ребят на видосах при каждом перезапуске программы меняется адрес в памяти у переменной, у меня же он всегда один и тот же
Бывает, когда система не загружена процессами и в промежутках между запуском вашей программы, освобожденная память по этому адресу остается свободной, т.е. еще никакая другая программа не успела ее "зарезервировать" за собой. И при запуске вашей программы, ей снова отдается тот же участок памяти.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.10.2023, 16:45
Tanya2007, там же виртуальное адресное пространство.
1
0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 29
30.10.2023, 16:46  [ТС]
https://www.youtube.com/watch?v=n0saIDd3H-M
8:16
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.10.2023, 17:01
geymer228, странно, что у него меняется адрес.
Надо ждать ответа знатоков этой темы.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6136 / 2830 / 1039
Регистрация: 01.06.2021
Сообщений: 10,331
30.10.2023, 17:14
nmcf, и у меня меняется и я больше бы удивился, если он не менялся бы
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.10.2023, 17:44
Royal_X, программа загружается в виртуальное адресное пространство. Образ попадает на 00004000, стек дальше. Поэтому адрес скорее должен быть одинаковым. Разве что там из каких-нибудь соображений безопасности адрес стека плавает.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6136 / 2830 / 1039
Регистрация: 01.06.2021
Сообщений: 10,331
30.10.2023, 17:49
Лучший ответ Сообщение было отмечено geymer228 как решение

Решение

nmcf, я так понимаю моя винда 10 использует ASLR (address space layout randomization), соответственно у меня меняется.
Кстати, в Википедии написано

В ОС Windows технология ASLR поддерживается, начиная с Windows Vista (2007 год) для исполнимых файлов и библиотек, собранных сo специальными флагами.

ASLR также поддерживается в более поздних версиях Windows, таких как Windows Server 2008, Windows 7, Windows Server 2008 R2, Windows 8, Windows 8.1, Windows 10.

ASLR не используется для приложений, собранных без специальных флагов, и при работе в режиме совместимости с более ранними версиями Windows.

В ОС Windows XP и Windows Server 2003 ASLR можно включить для любых выбранных приложений с помощью набора средств Microsoft EMET (Enhanced Mitigation Experience Toolkit).
2
0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 29
30.10.2023, 17:58  [ТС]
Royal X, вот что чат гпт написал кстати "как один из вариантов" : Случайная адресация (ASLR): Многие современные операционные системы применяют механизм ASLR, который случайным образом изменяет базовый адрес стека и размещение выделенной памяти для безопасности. Это может привести к изменению адресов переменных при каждом запуске программы. Спорная штука, сейчас попробую разузнать что-то. Просто еще у меня в колледже на компе такая же фигня была, что адрес один и тот же.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1819
Регистрация: 18.10.2014
Сообщений: 17,198
30.10.2023, 18:12
Лучший ответ Сообщение было отмечено geymer228 как решение

Решение

Цитата Сообщение от Tanya2007 Посмотреть сообщение
Бывает, когда система не загружена процессами и в промежутках между запуском вашей программы, освобожденная память по этому адресу остается свободной, т.е. еще никакая другая программа не успела ее "зарезервировать" за собой. И при запуске вашей программы, ей снова отдается тот же участок памяти.
Это не верно. Никакие "другие программы" тут никакого значения не имеют.

Когда вы запускаете свою программу, вы всегда видите абсолютно пустое, девственно чистое виртуальное адресное пространство. А вот действие ASLR специально помещает начальный адрес стека, сегмента данных и пр. в случайные места в этом пустом адресном пространстве. Потому адреса переменных и меняются при каждом запуске.
2
0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 29
30.10.2023, 18:24  [ТС]
Да-да видимо это именно ASLR, он у меня выключен, поэтому думаю в этом проблема и заключается. Хотя, не буду пока что закрывать тему, тк не на 100% уверен.
0
0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 29
30.10.2023, 18:28  [ТС]
Параметр находится в защите от эксплойтов, но из за некоторых ошибок, я не могу проверить его. Кто сможет протетстить (вкл/выкл) этот пункт, тому благодарочка
Миниатюры
Почему не меняется адрес в памяти у переменной при перезапуске программы?  
0
0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 29
30.10.2023, 18:47  [ТС]
Вопрос исчерпан. Все дело было в ASLR. Т.к. у меня был 'в принципе' вырублен весь windows defender, следовательно и параметр ASLR, находящийся в "защите от эксплойтов" был выключен. Поэтому и адреса всегда у меня выдавались одни и те же. Сейчас включил его и все встало на свои места.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.10.2023, 19:53
Цитата Сообщение от Royal_X Посмотреть сообщение
моя винда 10 использует ASLR (address space layout randomization)
Ну я об этом и говорил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.10.2023, 19:53
Помогаю со студенческими работами здесь

std::invalid_argument при перезапуске программы
Всем привет, пишу проверку вводимых пользователем символов, которая должна пропускать только цифры(с точкой и минусом), затем...

Сохранить выбранный путь при перезапуске программы
В общем смысл таков, есть textBox и button. Кнопка работает как &quot;обзор&quot;, по нажатию открывается диалоговое окно, выбирается txt-файл, и в...

Запомнить значения RichTextBox при перезапуске программы
Доброго времени суток! Наткнулся на грабли, не могу реализовать сохранение вписанного текста: RichTextBox1 в переменную Adres после нажатия...

Сохранение записей StringGrid при перезапуске программы
Как можно сделать так что бы после закрытия программы даные занесенные в StringGrid сохранялись. Тоесть что бы при открытии программы в...

Запомнить значения TextBox при перезапуске программы
Есть текст боксы в которые я ввожу значения,они передаются на другую форму и записываются в листбокс.как сделать так чтобы текст бокс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru