@Dr3g0nra1der
Backend Java Developer

Моно ли присвоить переменной/указателю определённый адрес в памяти?

Всех приветствую! Я являюсь новичком в C++, так что вопрос может прозвучать немного глупо.

Например, я хочу присвоить переменной/указателю адрес 0046FCF0. Возможно ли это сделать, и если да, то как? В google ответа не нашёл.
  • Вопрос задан
  • 636 просмотров
Пригласить эксперта
Ответы на вопрос 2
@res2001
Developer, ex-admin
Присвоить адрес указателю можно. По сути указатель - это просто целочисленная переменная, разрядность которой равна разрядности адресной шины. Но арифметические операции с указателями имеют правила отличные от обычной арифметики (адресная арифметика).

Обращаться по присвоенному адресу (делать разыменование, получать значение лежащее по указанному адресу), если вы точно не знаете, что делаете, не стоит, т.к. это может привести к access violation (segmentation fault).
В современных ОС используется виртуальная память, из-за чего память используемая программой должна быть корректно выделена с помощью механизмов предоставляемых ОС (new).
В микроконтроллерах нет виртуальной памяти, поэтому вся память программе доступна сразу. Там вы можете свободно обращаться к любому адресу в пределах физически доступного адресного пространства.
Ответ написан
Комментировать
@none7
int *p = (int*)0x0046FCF0;
Только вот в нынешних ОС обычно не бывает никаких фиксированных адресов. Такое может быть нужно, разве, что при программировании микроконтроллеров или драйверов под ARM.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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