Форум программистов, компьютерный форум CyberForum.ru

получить значению ячеека 0x22ff20 - C++

Восстановить пароль Регистрация
 
kentaw
 Аватар для kentaw
418 / 126 / 4
Регистрация: 24.02.2009
Сообщений: 1,120
02.03.2011, 13:05     получить значению ячеека 0x22ff20 #1
В ячееке 0x22ff20 есть значения 123. Как получить эту значению?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int hex=0x22ff20;
    cout<<*hex<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Эта выдает ошибка...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2011, 13:05     получить значению ячеека 0x22ff20
Посмотрите здесь:

C++ Массив по значению
C++ Передача по значению и по адрессу
Обращение к значению элемента C++
C++ передача массива по значению
Сортировка map по значению C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
02.03.2011, 13:17     получить значению ячеека 0x22ff20 #2
Но лично у меня там ничего нет)

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int* hex=(int*)(0x22ff20);
    cout<<*hex<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
kentaw
 Аватар для kentaw
418 / 126 / 4
Регистрация: 24.02.2009
Сообщений: 1,120
02.03.2011, 13:55  [ТС]     получить значению ячеека 0x22ff20 #3
Не получилос.
Ситуация такая:
5 дня тому назад написал такая код и скомпилировал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int *x, y;
    y=123;
    x=&y;
    cout<<"Adres y: "<<x<<endl<<"Znacenie y: ="<<*x<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Сегодня запустил этого екзеншика, ШОК!, 123 прячится там...

Добавлено через 16 секунд
Не получилос.
Ситуация такая:
5 дня тому назад написал такая код и скомпилировал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int *x, y;
    y=123;
    x=&y;
    cout<<"Adres y: "<<x<<endl<<"Znacenie y: ="<<*x<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
Сегодня запустил этого екзеншика, ШОК!, 123 прячится там...

Добавлено через 10 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int* hex=(int*)(0x22ff20);
    cout<<*hex<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
это код выдает 16

Добавлено через 16 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int* hex=(int*)(0x22ff20);
    cout<<*hex<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
это код выдает 16
Digit@ll
Brainsbreaker
 Аватар для Digit@ll
832 / 343 / 27
Регистрация: 01.02.2011
Сообщений: 1,483
02.03.2011, 13:58     получить значению ячеека 0x22ff20 #4
kentaw, ты что на приколе?
kentaw
 Аватар для kentaw
418 / 126 / 4
Регистрация: 24.02.2009
Сообщений: 1,120
02.03.2011, 14:30  [ТС]     получить значению ячеека 0x22ff20 #5
нет не шучу и не понимаю как это происходить. Может быт мой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int *x, y;
    y=123;
    x=&y;
    cout<<"Adres y: "<<x<<endl<<"Znacenie y: ="<<*x<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}
любит адресу 0x22ff20.

 Комментарий модератора 
Хватит повторять свои сообщения!
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
02.03.2011, 14:39     получить значению ячеека 0x22ff20 #6
kentaw, это же не реальный физический адрес, а смещение внутри области памяти выделенной для программы. В принципе сдесь нет ничего удивительного.
kentaw
 Аватар для kentaw
418 / 126 / 4
Регистрация: 24.02.2009
Сообщений: 1,120
02.03.2011, 15:23  [ТС]     получить значению ячеека 0x22ff20 #7
Цитата Сообщение от kazak Посмотреть сообщение
kentaw, это же не реальный физический адрес, а смещение внутри области памяти выделенной для программы. В принципе сдесь нет ничего удивительного.
Спасибо, понял. И еще вопрос возникает: Тогда почему КАЖДЫЙ ДЕНЬ при запуске, выдает тот же адрес?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
02.03.2011, 17:27     получить значению ячеека 0x22ff20 #8
Цитата Сообщение от kentaw Посмотреть сообщение
Тогда почему КАЖДЫЙ ДЕНЬ при запуске, выдает тот же адрес?
Цитата Сообщение от kazak Посмотреть сообщение
kentaw, это же не реальный физический адрес, а смещение внутри области памяти выделенной для программы. В принципе сдесь нет ничего удивительного.
kentaw
 Аватар для kentaw
418 / 126 / 4
Регистрация: 24.02.2009
Сообщений: 1,120
02.03.2011, 18:54  [ТС]     получить значению ячеека 0x22ff20 #9
ок. понял всем спасибо
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,946
02.03.2011, 18:59     получить значению ячеека 0x22ff20 #10
А абсолютный адрес можно узнать как-то ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2011, 19:12     получить значению ячеека 0x22ff20
Еще ссылки по теме:

Передача в функцию по значению C++
C++ Передача по значению
C++ Передача fstream по значению

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

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
02.03.2011, 19:12     получить значению ячеека 0x22ff20 #11
Цитата Сообщение от KuKu Посмотреть сообщение
А абсолютный адрес можно узнать как-то ?
Да, можно. Нужно взять значение сегментного регистра (любого, под виндой они все равны) и смещение, и проделать с ними определенные манипуляции. Не простое сложение, а как то по хитрому там это делается, я не помню. Это легко можно нагуглить.

Добавлено через 6 минут
Виртуальный адрес при страничном распределении может быть представлен в виде пары (p, s), где p - номер виртуальной страницы процесса (нумерация страниц начинается с 0), а s - смещение в пределах виртуальной страницы. Учитывая, что размер страницы равен 2 в степени к, смещение s может быть получено простым отделением k младших разрядов в двоичной записи виртуального адреса. Оставшиеся старшие разряды представляют собой двоичную запись номера страницы p.
При каждом обращении к оперативной памяти аппаратными средствами выполняются следующие действия:
1.на основании начального адреса таблицы страниц (содержимое регистра адреса таблицы страниц), номера виртуальной страницы (старшие разряды виртуального адреса) и длины записи в таблице страниц (системная константа) определяется адрес нужной записи в таблице,
2.из этой записи извлекается номер физической страницы,
3.к номеру физической страницы присоединяется смещение (младшие разряды виртуального адреса).
Чтоб это понять нужно знать, что такое страничное распределение памяти.
Yandex
Объявления
02.03.2011, 19:12     получить значению ячеека 0x22ff20
Ответ Создать тему
Опции темы

Текущее время: 03:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru