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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 5.00
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 13:31     Доступ к памяти по адресу #1
Есть структура, элементы которой адрес на начало массива в памяти и его размер. Адреса хранятся в 16-ричном формате. Мне нужно распечатать то, что лежит в этом массиве.

C++
1
2
3
4
for (int i = 0; i <= ((int)(current->_size)); i++)
            {
                TraceFile << (current->_address)[i]<<endl;
            }
(current->_address)[i] - некорректно, не могу придумать, как сделать иначе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.07.2013, 13:33     Доступ к памяти по адресу #2
Цитата Сообщение от sly4ainaya Посмотреть сообщение
Адреса хранятся в 16-ричном формате.
Это как?
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 13:36  [ТС]     Доступ к памяти по адресу #3
0x1bc9010 ну так, например..
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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ричная константа
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 13:51  [ТС]     Доступ к памяти по адресу #5
пишут про некоторый оператор at, например, at(0x60)
но у меня компилятор ругается на такую попытку
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.07.2013, 13:55     Доступ к памяти по адресу #6
Ты скажи, чё те надо то?

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

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

Добавлено через 5 минут
а, спасибо я поняла, по-моему, как надо
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 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;
}
Так что ли? При чём тут адреса?
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++;
            }
и получился какой-то бред, у меня совсем другие значения хранятся, а не те, что вывелись в файл
Fintt
 Аватар для Fintt
10 / 10 / 0
Регистрация: 13.02.2012
Сообщений: 94
29.07.2013, 14:09     Доступ к памяти по адресу #10
sly4ainaya, напиши что тебе нужно от начало и до конца +код.
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 14:10  [ТС]     Доступ к памяти по адресу #11
нееет не то, что хранится в структуре.

У меня есть структура, содержащая адрес начала и количество элементов, которое нужно считать. Я хочу пробежаться по всем элементам от (начала адреса) до (начало адреса) + (размер)
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.07.2013, 14:11     Доступ к памяти по адресу #12
Цитата Сообщение от sly4ainaya Посмотреть сообщение
содержащая адрес начала
начала чего?
код весь показывай! Особенно то, как ты инициализируешь то, что хочешь вывести!
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 14:14  [ТС]     Доступ к памяти по адресу #13
ну вот например, я выделяю память
C++
1
 vars = (F_TYPE *)malloc(size);
в vars хранится адрес на начало блока памяти размером size. Я сохранила этот адрес и размер, потом поработала с памятью и теперь хочу получить то, что там лежит
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
29.07.2013, 14:16     Доступ к памяти по адресу #14
структуру напиши.
адреса представлены как указатель на массив, и ты хочешь побайтно побжаться по нему?
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;
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.07.2013, 14:18     Доступ к памяти по адресу #16
Цитата Сообщение от sly4ainaya Посмотреть сообщение
да, представляю, как глупо это выглядит, сейчас скажете мне обращаться к vars поиндексно, но мне так нельзя
почему? если других ошибок нет, то всё будет работать!
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 14:26  [ТС]     Доступ к памяти по адресу #17
а я никак не инициализирую то, что хочу вывести (vars не в счет). Я хочу, зная начало блока памяти и его размер вывести все, что там лежит

Добавлено через 1 минуту
я пишу программку, которая отлавливает malloc и сохраняет его входное (размер массива) и выходное (адрес начала блока памяти) значения.. то что этот адрес сохранен в vars я не знаю как бы

Добавлено через 5 минут
Пока вывод такой
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++;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.07.2013, 14:29     Доступ к памяти по адресу #18
current->_address какой тип имеет?
sly4ainaya
2 / 2 / 0
Регистрация: 11.03.2011
Сообщений: 49
29.07.2013, 14:33  [ТС]     Доступ к памяти по адресу #19
unsigned long long int
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 14:34     Доступ к памяти по адресу
Еще ссылки по теме:

Выделение памяти по известному адресу C++
Доступ к произвольному адресу памяти C++
C++ Вызов функции-члена класса по адресу в памяти

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
29.07.2013, 14:34     Доступ к памяти по адресу #20
Цитата Сообщение от sly4ainaya Посмотреть сообщение
unsigned long long int
что за ерунда? Разве это не указатель?
Yandex
Объявления
29.07.2013, 14:34     Доступ к памяти по адресу
Ответ Создать тему
Опции темы

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