![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Дружелюбный
Форумчанин
Регистрация: 23.02.2012
Сообщений: 692
|
![]()
Всем привет!
У меня возник вопрос. Моя программа использует переменную, и при каждом запуске программы адрес этой переменной в ОЗУ меняется. Допустим первый раз я запустил прорамму и первая свободная ячейка (до запуска проги) находилась по адресу $00010000 (для простоты). А адрес переменнлой стал $00010005. Затем , допустим, я закрыл и открыл заново программу. До запуска первая свободная ячейка была $00020000. То следовательно адреc моей переменной будет $00020005??? Или я ошибаюсь??? -==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Нет, не правильно. Почитайте о динамическом распределении памяти.
Каждый процесс грузится по новому адресному пространству и уже относительно него грузятся модули. Адреса держите относительно физического файла(RVA преобразуйте в смещение в файле). И уже их преобразуйте в виртуальные. Вот инфа исчерпывающая по вопросу: http://www.tech-juice.org/2011/02/21...fset-and-back/ |
![]() |
![]() |
![]() |
#3 |
Дружелюбный
Форумчанин
Регистрация: 23.02.2012
Сообщений: 692
|
![]()
Спасибо!
Буду читать. -==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
|
![]() |
![]() |
![]() |
#4 |
Дружелюбный
Форумчанин
Регистрация: 23.02.2012
Сообщений: 692
|
![]()
Прочитал ту статью.
Мало что понял. Есть подробная статья о том как программы сами определяют какая переменная есть какая, там что то было написано про статические указатели к переменным, но как это работает не очень понял??? -==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
И да, никогда не переводите переводчиком техническую документацию. Ещё больше ничего не поймете. |
|
![]() |
![]() |
![]() |
#6 | |
Дружелюбный
Форумчанин
Регистрация: 23.02.2012
Сообщений: 692
|
![]() Цитата:
File Offset = RVA - Section Virtual Offset + Section Raw Offset Эту формулу понял. Только странно. Создал свою прогу с одной переменной, которой при создании присвоил 555. Адрес переменной в памяти остался неизменной, как при нескальких перезапусках проги, так и при перезагрузке ПК. -==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
|
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#8 | |
Дружелюбный
Форумчанин
Регистрация: 23.02.2012
Сообщений: 692
|
![]() Цитата:
Скачал File Location Calculator. С помощью всё той же ArtMoney вычислил адрес в памяти. Так вот, вопрос, какой адрес мне даёт ArtMoney: RVA,Section Virtual Offset,Section Raw Offset, а то я уже запутался савсем??? -==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
|
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Артмани выдает 1-2 адреса. 1 из них это RVA.
|
![]() |
![]() |
![]() |
#10 | |
Дружелюбный
Форумчанин
Регистрация: 23.02.2012
Сообщений: 692
|
![]() Цитата:
RVa- тоесть это адрес процесса , а не системы??? -==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
|
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Для public переменной класса присвоить адрес ячеек из внешней переменной | _KUL | Qt и кроссплатформенное программирование С/С++ | 2 | 28.05.2012 12:04 |
Адрес переменной | _-Re@l-_ | Паскаль, Turbo Pascal, PascalABC.NET | 16 | 30.12.2010 12:02 |
Адрес переменной | _-Re@l-_ | Общие вопросы .NET | 3 | 25.12.2010 16:58 |
Адрес переменной | kostyan777 | Общие вопросы C/C++ | 4 | 11.07.2010 22:16 |
Адрес переменной | Pedro | Общие вопросы Delphi | 11 | 16.12.2008 13:03 |