Другие языки программирования и технологии

Как вычислить, какой получится размер исполняемого файла (в байтах) после компиляции исходного кода программы?

Ну, если бы Вы немного разбирались в теме вопроса, то можно было бы о чём поговорить!
Капитан Гугл в данном случае прав. Дело в том, что размер результирующего исполняемого файла даже для одной и же программы может быть разным в зависимости от параметров, котооые установлены.
Но конечно, можно оценить примерно размер в каких-то пределах. Но всё это можно проще экспериментальным путём. Сделайте компиляцию большого количества программ и усредните соответствие исходного и получаемого размера. Это и будет некоторым утешением Вашего любопытства!
Сергей Озеров
Сергей Озеров
76 473
Лучший ответ
Константин Черепушкин Юрий-17 Оракул "Сделайте компиляцию большого количества программ" (10^6 - 10^15 ...) "и усредните соответствие исходного и получаемого размера. Это и будет некоторым утешением" того, что Вы ответили!
Давно прошли те времена.. . Посмотри, сколько места займет текст "Hello, world!". Это когда-то выжимали байты. Помню, в восьмидесятые меня поразила "хвалилка" ребят, создавших Fox. (Не браузер, а DBF-ную СУБД) . Меньше, чем в два килобайта, они втиснули вполне разборчивый (несмотря на наличие только спикера) куплет песенки с бежавшим по экрану разноцветным текстом самой "хвалилки" да еще и все (три) лампочки на клаве в такт моргали. Это было круто. Тогда...
Хорошо, ответ "проделать все те же действия, которые проделает компилятор, вручную", тебя устроит?
Комплиляция - сложный и нетривиальный процесс. Результирующий файл, в зависимости от настроек компилятора и своего содержимого, будет включать:
- системные заголовки определенного типа исполняемого файла (ручаюсь, ты даже не думал, что бывают разные) ;
- ресурсы, если такие были;
- определенные библиотечные функции (а может, программа будет расчитывать, что они будут в системных файлах) ;
- данные самой программы (например, в зависимости от битности целевой системы массив целых значений из 1000 элементов может занимать от 2000Б до 8000Б) ;
- код, размер которого также будет заметно различаться при разных настройках оптимизации на разных компиляторах (в некоторых случаях - в полтора-два раза, а то и больше) ;
- что-то еще, что не попадает под предыдущие пункты, но, скорее всего, я забыл добавить.

Ну так вот, на каком простом примере ты хочешь, чтобы тебе это показали?
Игорь Васильев
Игорь Васильев
56 745
Константин Черепушкин Капитан Гугл, не усложняй, если не можешь ответить. Ответ не так сложен, как ты думаешь.
Константин Черепушкин Гугл Оракул, твои знания настолько глубоки, что ни одного несложного примера в голову не приходит?
Константин Черепушкин Зачем отвечать на вопрос, на который не знаешь ответ?
Константин Черепушкин "Я знаю, что на этот вопрос нет прямого ответа" - ответ пользователя компилятора.