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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 5.00
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
#1

Доступ к памяти по адресу - C++

29.07.2013, 13:31. Просмотров 1962. Ответов 42
Метки нет (Все метки)

Есть структура, элементы которой адрес на начало массива в памяти и его размер. Адреса хранятся в 16-ричном формате. Мне нужно распечатать то, что лежит в этом массиве.

C++
1
2
3
4
for (int i = 0; i <= ((int)(current->_size)); i++)
            {
                TraceFile << (current->_address)[i]<<endl;
            }
(current->_address)[i] - некорректно, не могу придумать, как сделать иначе
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2013, 13:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Доступ к памяти по адресу (C++):

Доступ к произвольному адресу памяти - C++
Есть известный адрес в памяти с известным значением int Хотел бы проверить это значение после того как введу адрес памяти вручную. ...

Доступ к переменной по абсолютному адресу. - C++
Мне нужно обратится к ячейке памяти с известным конкретным адресом (это может быть вектор прерывания, переменная БИОС итд). Как это сделать...

Прочитать из памяти по адресу - C++
Задача: в памяти по адресу 0040:0010h (0x00400010) записано слово (информация о подключенном оборудовании). Нужно прочитать 12-й бит этого...

Данные по адресу памяти - C++
У меня есть адрес например 0x11E9B62C как узнать что по нему записанно?

Выделение памяти по известному адресу - C++
Всем привет. Вопрос сообственно в заголовке темы. Как выделить память по нужному мне адресу, например: Я хочу выделить память n*...

Взятие обьекта по адресу в памяти - C++
Допустим, я знаю что по адресу 0x13242341 находится произвольный обьект. Как возвратить указатель типа void на данный адрес Типо так?...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
29.07.2013, 13:33 #2
Цитата Сообщение от sly4ainaya Посмотреть сообщение
Адреса хранятся в 16-ричном формате.
Это как?
1
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 13:36  [ТС] #3
0x1bc9010 ну так, например..
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
29.07.2013, 13:50 #4
Цитата Сообщение от sly4ainaya Посмотреть сообщение
0x1bc9010 ну так, например.
с чего это ты взял?
адреса хранятся как адреса - 4 байта в win32. А присваивать им можно значения в любом формате:
C++
1
2
3
4
int* ptr;
ptr=(int*)0xcdcdcdcd;//16ричная константа
ptr=(int*)1234;//10ичная константа
ptr=(int*)012;//8ричная константа
1
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 13:51  [ТС] #5
пишут про некоторый оператор at, например, at(0x60)
но у меня компилятор ругается на такую попытку
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
29.07.2013, 13:55 #6
Ты скажи, чё те надо то?

Добавлено через 2 минуты
больше кода!
1
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 14:02  [ТС] #7
у меня структура, я храню адреса именно так

надо пробежаться по куску памяти и распечатать, что там хранится. Я знаю начало этого куска памяти и его размер

Добавлено через 5 минут
а, спасибо я поняла, по-моему, как надо
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
29.07.2013, 14:04 #8
больше кода!
распечатать, что хранится в структуре так что ли?
C++
1
2
3
4
5
6
7
8
struct info{
 int value1;
 char value2;
 double value3;
};
void Print(ofstream& TraceFile, struct info& data){
  TraceFile<<data.value1<<data.value2<<data.value3;
}
Так что ли? При чём тут адреса?
1
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 14:08  [ТС] #9
или не поняла.. я сделала так
C++
1
2
3
4
5
6
7
for (int i = 0; i <= ((int)(current->_size)); i++)
            {
                int * ptr;
                ptr = (int*)(current->_address);
                TraceFile <<(int)(*ptr)<<endl;
                current->_address++;
            }
и получился какой-то бред, у меня совсем другие значения хранятся, а не те, что вывелись в файл
0
Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
29.07.2013, 14:09 #10
sly4ainaya, напиши что тебе нужно от начало и до конца +код.
1
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 14:10  [ТС] #11
нееет не то, что хранится в структуре.

У меня есть структура, содержащая адрес начала и количество элементов, которое нужно считать. Я хочу пробежаться по всем элементам от (начала адреса) до (начало адреса) + (размер)
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
29.07.2013, 14:11 #12
Цитата Сообщение от sly4ainaya Посмотреть сообщение
содержащая адрес начала
начала чего?
код весь показывай! Особенно то, как ты инициализируешь то, что хочешь вывести!
1
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 14:14  [ТС] #13
ну вот например, я выделяю память
C++
1
 vars = (F_TYPE *)malloc(size);
в vars хранится адрес на начало блока памяти размером size. Я сохранила этот адрес и размер, потом поработала с памятью и теперь хочу получить то, что там лежит
0
zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
29.07.2013, 14:16 #14
структуру напиши.
адреса представлены как указатель на массив, и ты хочешь побайтно побжаться по нему?
1
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 14:18  [ТС] #15
да, представляю, как глупо это выглядит, сейчас скажете мне обращаться к vars поиндексно, но мне так нельзя

Добавлено через 55 секунд
Структура такая. Там еще поле для подсчета контрольных сумм
C++
1
2
3
4
5
6
7
8
9
typedef struct ForMemory
{
    int _size;
    unsigned long long int _address;
    unsigned int _crc;
    int CRCcount;
    struct ForMemory * _next;
    struct ForMemory * _previous;
}FOR_MEMORY;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 14:18
Привет! Вот еще темы с ответами:

Почему обращение к недоступному адресу в памяти - C++
Почему при проверке кода(компиляции) выскакивает сообщение :&quot;Недостаточный размер массивов или обращение по недоступному адресу в памяти&quot; ?...

Вызов функции-члена класса по адресу в памяти - C++
Всем хорошего дня :) Допустим, что где-то есть static функция, не принимающая аргументов и ничего не возвращающая. Имея один лишь...

Как сделать массив в памяти по фиксированному адресу? - C++
Есть микропроцессор, и в нем по жестко зафиксированному адресу находится массив ячеек. Допустим типа int. Как в Си мне организовать к нему...

Вызвано исключение по адресу 0x0FD466CB (ucrtbased.dll). Динамическое выделение памяти - C++
Проблема в динамическом выделении памяти. Функция multiply доходит до возвращения объекта и вылетает исключение. Если функция вернет просто...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.07.2013, 14:18
Ответ Создать тему
Опции темы

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