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

Адреса функций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите в написании программы (C++) http://www.cyberforum.ru/cpp/thread53169.html
За каждый ход генерируется случай n-ое число от 0 до 6 (моделируется выпадание игрального кубика). На основании полученного числа пользователь может взять из общего "банка" n элементов (с ограничением не более чем выпавшее число). Побеждает игрок который берет последний элемент в "банке".
C++ Полиморфизм полиморфизм runtime vs compile polymorphism: как вы на проектах определяете, когда стоит пользоваться шаблоном, а когда виртуальными функциями? полиморфизм аргументов функции: допустим у меня в классе-интерфейсе A определена виртуальная функция принимающая и возвращающая ссылку или указатель на структуру a можно ли в реализации интерфейса B, поменять тип аргументов функции или тип... http://www.cyberforum.ru/cpp/thread52837.html
Работа с FTP C++
Приветы всем! Помогите, пожалуйста, решить такую задачку... вот недавно начал изучать СИ и вот назрела мысль...:) итак, пользователь задаёт хост, логин и пасс от ФТП сервера, далее выбират один из пунктов radio button (если первый радио - грузятся первая группа файлов, второй - вторая группа и т.д.), далее нажимает кнопку "Загрузить" и в прогресс баре отображается ход загрузки файлов, по...
C++ Баг в MinGW при использовании fread
Ну собственно вот простой тестовый код который выполняется некорректно: #include <cstdio> using namespace std; const int N = 2500; int main() { int *array = new int;
C++ Нахождение суммы http://www.cyberforum.ru/cpp/thread52025.html
Помогите пожалуйста решить задачу. Даны натуральные числа N и M(N>M) вычислить: S=знак суммы(E),вверху N внизу k=M (k^2*ln(k!))
C++ Очень нужен Borland C++ 5.0, подскажите где найти можно? очень нужен Borland C++ 5.0, подскажите где найти можно, уже перелазил в гугле хрен знает сколько страниц подробнее

Показать сообщение отдельно
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,340
29.09.2009, 22:57     Адреса функций
1. Адреса функций формирует (создает, рождает, генерирует.... синонимов добавить по вкусу) отнюдь не операционная система, а линкер той системы программирования, в которой собирается приложение. Каждому приложению в Windows и в *nix выделяется собственное, отдельное от других приложений виртуальное адресное пространство. Как именно линкер распределит функции по этому виртуальному адресному пространству - его внутреннее дело, в которое нам запускать свои шаловливые ручонки не след.
1.1. Большинство из известных мне линкеров последовательно объединяют в т.н. "секцию кода" (.code или .text) исполняемый код всех единиц компиляции, входящих в проект. Адреса функций при этом, как правило, выравниваются на границу в 16 байт и монотонно нарастают - в том порядке, как эти функции встречает линкер. Т.е, грубо говоря, адрес следующей функции = (адрес предыдущей функции + размер кода в байтах этой предыдущей функции, округленный до кратного 16 в большую сторону). Начальный адрес, от которого "пляшет" компилятор, как от печки, - зависит от ОС и установок компилятора, в Win32, например, это 0x00400000 - базовый адрес загрузки исполняемого файла. С DLL похожая история, только для них базовый адрес 0x10000000.
2. Виртуальные функции имеют смысл только в контексте разговора об объектах каких-либо классов. Если класс имеет виртуальные функции, то в "тело" объекта внедрен указатель на т.н. "таблицу виртуальных функций" (vmt или vft). Где именно будет расположена эта таблица - для каждого типа объектов своя - личное внутреннее дело линкера. Как правило, линкер кладет ее либо в секцию кода (.text), либо в секцию инициализированных констант (.rdata = read-only data).
Исполняемый файл (без разницы, exe или dll) делится на секции - сначала идет заголовок, потом секция кода (.code или .text), потом - .rdata, .idata, .data и т.д., начало каждой секции выравнивается по адресам, кратным 4 кбайт.

"В таком вот аксепте." (с) М.П.Камноедов.
 
Текущее время: 11:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru