Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
1

адресс начала класса

17.02.2014, 18:15. Показов 1182. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть к примеру класс:

C++
1
2
3
4
5
6
7
class abc
{
public:
func1();
func2();
};
abc ABC;
Хотелось бы посмотреть его расположение в памяти.

Как вывести адрес начала класса или хотя бы любой функции внутри него и возможно ли вообще это сделать , пробнул такими способами:

C++
1
2
3
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , ABC);
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , *(DWORD*)ABC);
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , &ABC);
Выводится бред какой-то...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2014, 18:15
Ответы с готовыми решениями:

ID адресс
Добрый день! Скажите, пожалуйста, По каким данным или при каких обстоятельствах можно определить...

IP адресс
Кому не сложно,дайте пожалуйста код,как узнасть и вывести в label адрес своего IP

Адресс компонента
Ребята нужна ваша помощь! Возник такой вопрос! Мне для дипломного проекта нужна панель шрифтов....

мак адресс
привет всем! не судите строго,но купил на днях у барыги хороший ноут но есть подозрение что он не...

12
Заблокирован
17.02.2014, 18:19 2
abc *ABC = new abc;
в дебаггере в окне Memory1 вводишь ABC или копируешь туда адрес, который ты видишь при надеведии на него мышкой. Окно памяти настраиваешь как тебе удобно
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
17.02.2014, 18:22 3
Цитата Сообщение от ВДВ777 Посмотреть сообщение
Хотелось бы посмотреть его расположение в памяти.
никак, класс это лишь описание
0
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 18:30  [ТС] 4
Цитата Сообщение от Croessmah Посмотреть сообщение
никак, класс это лишь описание
а функцию внутри класса?
0
погромист
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
17.02.2014, 18:47 5
ВДВ777, разберись что такое класс и объект, почитай об указателях а потом выброси всю дурь с головы. А если уже нетерпеж то
C++
1
std::cout << &ABC;
0
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 19:07  [ТС] 6
Цитата Сообщение от coloc Посмотреть сообщение
ВДВ777, разберись что такое класс и объект, почитай об указателях а потом выброси всю дурь с головы. А если уже нетерпеж то
C++
1
std::cout << &ABC;
C++
1
2
3
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , ABC);
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , *(DWORD*)ABC);
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , &ABC);
эти примеры я просто так выложил??? Я уже это пробнул и не раз
0
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
17.02.2014, 19:10 7
Цитата Сообщение от ВДВ777 Посмотреть сообщение
эти примеры я просто так выложил??? Я уже это пробнул и не раз
Чем конкретно не устраивает предложенный вывод? Не пойми меня не правильно, просто мне не очень ясно что значит "бред".
0
погромист
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
17.02.2014, 19:19 8
ВДВ777, а ты че думал адрес выведется типу ,,ул. Пушкина 19/А,,?
1
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 19:21  [ТС] 9
Цитата Сообщение от DrOffset Посмотреть сообщение
Чем конкретно не устраивает предложенный вывод? Не пойми меня не правильно, просто мне не очень ясно что значит "бред".
разные адреса выводит каждый раз - то есть 3 примера которые я привел выше - выводят 3 разных адреса , мало того эти адреса не каким боком не относятся к моей программе , выходят за рамки выделенной памяти для проги и её модулей , короче левые адреса

Добавлено через 1 минуту
Цитата Сообщение от coloc Посмотреть сообщение
ВДВ777, а ты че думал адрес выведется типу ,,ул. Пушкина 19/А,,?
вот я и создал данную тему , чтобы мне разъяснили как найти адрес начала класса
0
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
17.02.2014, 19:26 10
Цитата Сообщение от ВДВ777 Посмотреть сообщение
разные адреса выводит каждый раз - то есть 3 примера которые я привел выше - выводят 3 разных адреса , мало того эти адреса не каким боком не относятся к моей программе , выходят за рамки выделенной памяти для проги и её модулей , короче левые адреса
Ну там в двух случаях вообще не адреса выводятся.
C++
1
2
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , ABC); // это не адрес
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , *(DWORD*)ABC); // и это не адрес
Адрес выводится только тут:
C++
1
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , &ABC);
Теперь осталось выяснить каким образом ты определил что "адреса не каким боком не относятся к моей программе"?
0
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 19:41  [ТС] 11
Цитата Сообщение от DrOffset Посмотреть сообщение
Ну там в двух случаях вообще не адреса выводятся.
C++
1
2
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , ABC); // это не адрес
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , *(DWORD*)ABC); // и это не адрес
Адрес выводится только тут:
C++
1
PrintText2(5 , 500 , SKYBLUE, pFont , "%X" , &ABC);
Теперь осталось выяснить каким образом ты определил что "адреса не каким боком не относятся к моей программе"?
взял обычный редактор памяти "cheat engine" и просмотрел диапазон памяти программы , dma точно нет , так как не использовал виртуальные функции (да и те адреса которые выводятся находятся почти в самом конце оперативной памяти) , только статические адреса , найти конец и начало модуля не сложно , как минимум вручную глянуть или как максимум так:

C++
1
2
3
4
5
6
7
8
9
MODULEINFO GetModuleData (char* module_name)
{
    MODULEINFO moduleInf = {0};
    HMODULE hModule = GetModuleHandle (module_name);
    if (hModule == NULL)
    return moduleInf;
    GetModuleInformation(GetCurrentProcess(), hModule , &moduleInf ,sizeof(MODULEINFO) );
    return moduleInf;
}
0
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
17.02.2014, 20:04 12
Лучший ответ Сообщение было отмечено ВДВ777 как решение

Решение

Цитата Сообщение от ВДВ777 Посмотреть сообщение
взял обычный редактор памяти "cheat engine"
Чисто ради интереса сейчас попробовал эту программу и прекрасно нашел свой адрес выведенный через:
C++
1
2
A a;
printf("%x\n", &a);
Что-то ты не так делаешь
А вообще советую почитать книжки на тему организации памяти в windows. Ну или для начала здесь.
Ну а адреса в своей программе все-таки лучше смотреть отладчиком.
1
-4 / 0 / 1
Регистрация: 12.03.2013
Сообщений: 110
17.02.2014, 20:08  [ТС] 13
Цитата Сообщение от DrOffset Посмотреть сообщение
Чисто ради интереса сейчас попробовал эту программу и прекрасно нашел свой адрес выведенный через:
C++
1
2
A a;
printf("%x\n", &a);
Что-то ты не так делаешь
А вообще советую почитать книжки на тему организации памяти в windows. Ну или для начала здесь.
Ну а адреса в своей программе все-таки лучше смотреть отладчиком.
да, спс, способ верный у меня тоже получилось все , просто нужно было "call" вписать подкласса , только так отображается верный адресс , тему можно закрыть
0
17.02.2014, 20:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2014, 20:08
Помогаю со студенческими работами здесь

Узнать ip адресс
Здравствуйте, как с помощью JavaScript узнать ip адресс посетителя сайта? слышал что это...

Excel и IP адресс
Добрый день Необходимо узнать куда утекают наши прайсы в какие фирмы. Возможно ли реализовать...

С начала суток прошло n секунд. Определить сколько полных минут прошло с начала очередного часа
С начала суток прошло n секунд. Определить сколько полных минут прошло с начала очередного часа.

С начала суток прошло N секунд (N — целое). Найти количество секунд, прошедших с начала последней минуты
21. С начала суток прошло N секунд (N — целое). Найти количество секунд, прошедших с начала...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru