Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
Poet
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 91
#1

Значение, хранящееся по адресу - C++

19.03.2011, 09:40. Просмотров 2674. Ответов 10
Метки нет (Все метки)

Как узнать адрес, по которому находится значение переменной, я уже знаю.
это с помощью = &var

А как узнать значение по адресу вообще? То есть если известен только адрес, и требуется узнать что там на нем. При том не используя переменные и указатели.
Вобще, возможно ли такое?

Я написал

cout << 0x10101010;

результат выдал. Но конечно же всегда одинаковый при каждом запуске.
Хотелось бы уточнить что это получилось такое?
И второе: это выводится значение адреса, который занимает сама программа или вся система вобще?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2011, 09:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Значение, хранящееся по адресу (C++):

по адресу получить значение - C++
Господа создаю программу которая задаёт значение и показывает адрес ячейке , запускаю её и в другой программе в исходник пишу этот адрес ,...

Парадокс: значение переменной равно её адресу - C++
Друзья! Вот код, в нём всё понятно. Выводятся одинаковые значения. Но ведь этого не может быть! Хотя бы потому не может, что по адресу,...

На сколько изменится число, хранящееся в переменной - C++
Дан фрагмент кода: float *pFl; pFl++;На сколько изменится число, хранящееся в переменной pFl после оператора pFl++?

Указатель: Получить значение по адресу, указываемому указателем - C++
Написать программу, в которой выполнить следующие действия: a) Описать указатели на все известные типы данных; b) Выполнить для каждого...

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу - C++
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость билета, количество мест). Выбор по дате...

как присвоить переменной значение, взятое по определенному адресу? - C++
Собственно у меня есть адрес (например, 010426D8), я знаю, что под этим адресом хранится целочисленное значение, как присвоить переменной...

10
bigredcat
366 / 313 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
19.03.2011, 10:29 #2
cout << 0x10101010; это вы выводите само значение 0x10101010 только в десятичном представлении. Попытка прочитать значение хранящегося по адресу 0x10101010 скорее всего вызовет у вас исключение Access Violation.
Попробуйте вот так cout << hex << 0x00400000 << ":" << *(int*)0x00400000;
1
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
19.03.2011, 10:30 #3
Цитата Сообщение от Poet Посмотреть сообщение
что это получилось такое?
Вы вывели на экран число.
Цитата Сообщение от Poet Посмотреть сообщение
это выводится значение адреса, который занимает сама программа или вся система вобще?
Нет, это просто число.
1
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
19.03.2011, 10:31 #4
Цитата Сообщение от Poet Посмотреть сообщение
результат выдал. Но конечно же всегда одинаковый при каждом запуске.
Хотелось бы уточнить что это получилось такое?
И второе: это выводится значение адреса, который занимает сама программа или вся система вобще?
Дай угадаю, выводится 269488144 ? )))
Это выводится число 0x10101010 в десятичном виде и не более того.

Цитата Сообщение от Poet Посмотреть сообщение
А как узнать значение по адресу вообще? То есть если известен только адрес, и требуется узнать что там на нем. При том не используя переменные и указатели.
Вобще, возможно ли такое?
Возможно, вот так:
C++
1
std::cout<<*(reinterpret_cast<unsigned char*>(0x01010101));
Но это совершенно бессмысленное занятие, и, скорей всего, будет ошибка доступа при чтении.

А зачем тебе понадобилось лазить по адресам в языке C? В ассемблере и то метки используются, чтоб самому адреса не просчитывать.

Добавлено через 1 минуту
опоздал...
1
Poet
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 91
19.03.2011, 11:51  [ТС] #5
Цитата Сообщение от Kastaneda Посмотреть сообщение
А зачем тебе понадобилось лазить по адресам в языке C?
Пытливый ум и все такое))

добавлено:
самофэйспалм удался))

Добавлено через 10 минут
Цитата Сообщение от bigredcat Посмотреть сообщение
cout << hex << 0x00400000 << ":" << *(int*)0x00400000;
Спасибо) теперь буду знать как проверять работоспособность антивируса)
0
bigredcat
366 / 313 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
19.03.2011, 12:05 #6
Цитата Сообщение от Poet Посмотреть сообщение
Спасибо) теперь буду знать как проверять работоспособность антивируса)
Да здесь ничего особо криминального нет, просто чтение содержимого по базовому (обычно) адресу загрузки ехе файла
0
Poet
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 91
19.03.2011, 12:09  [ТС] #7
память не могет быть read
только вчера гуглил как ее отключать)
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
19.03.2011, 12:12 #8
Цитата Сообщение от Poet Посмотреть сообщение
Спасибо) теперь буду знать как проверять работоспособность антивируса)
Ты представляешь себе, что такое страничная организация памяти?
0
Poet
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 91
19.03.2011, 12:15  [ТС] #9
спросил у лысого расческу...
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 1
19.03.2011, 12:18 #10
Просто так, как показали выше, можно получить значение по адресу внутри своего процесса (если такой адрес существует), и не более того, т.е. опять же повторюсь - абсолютно бесполезная информация.
0
Poet
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 91
19.03.2011, 12:25  [ТС] #11
нуууу... если ее можно узнать значит, она наверно зачем-то нужна)
0
19.03.2011, 12:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2011, 12:25
Привет! Вот еще темы с ответами:

Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу - C++
Помогите, пожалуйста, исправит ошибку. Необработанное исключение по адресу 0x77D88E19 (ntdll.dll) в Lab11.exe: 0xC0000005: нарушение...

Поменять значение по указанному адресу в переменной типа std::string - C++
Здравствуйте форумчане. Не получается никак правильно использовать средства С++. Задача такова: Например есть две строки типа...

Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу - C++
#include &lt;math.h&gt; const double eps = 0.001; ///&lt; желаемая точность /// N - размерность матрицы; A - матрица коэффициентов, F -...

Необработанное исключение по адресу 0x00105FD7 в Динамические структуры: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCE09 - C++
Необработанное исключение по адресу 0x00105FD7 в Динамические структуры.exe: 0xC0000005: нарушение прав доступа при чтении по адресу...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru