IkaR49
@IkaR49

Почему программа с использованием iostream весит намного больше, чем аналогичная с stdio?

Пишу на С++, компилятор MinGW, использую статическую линковку.
Создал два пустых проекта, в один подключил , в другой (собственно проекты пусты настолько, насколько это возможно).
После компиляции использую strip (вырезаю отладочную информацию из исполняемого файла) (собственно команды запуска такие)
После компиляции два файла:
kiss_7kb.1413497083.jpg

На скриншоте видно всю суть моего вопроса. Почему программа с библиотекой iostream занимает почти в 70 раз больше места, чем абсолютна аналогичная с библиотекой stdio?
  • Вопрос задан
  • 2781 просмотр
Пригласить эксперта
Ответы на вопрос 3
AxisPod
@AxisPod
Ну во-первых компилировать надо в релизе (в вашем случае надо включить оптимизацию, хотя бы O2) и никакой стрип не нужен. А так вы получаете неоптимизированный код, с кучей мусора, но без отладочной информации. В результате получите совершенно другие цифры.

Во-вторых iostream это шаблонный класс, с множеством различных шаблонных зависимостей. Кода генерируется куда как больше.

В-третьих код мы не видим и непонятно чего вы там наворотили.

В-четверых мы не знаем как вы компилируете.

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

P.S. Ну и в-пятых, вам уже сказали про статическую линковку, в этом случае весь необходимый код статически линкуемой библиотеки помешается в исполняемый файл.
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Перед тем как делать strip прогоните бинарник через nm -- он вам расскажет, что туда попало.
Ответ написан
@s0L
Ответ находится в вашем вопросе, "использую статическую линковку". Вы подключаете стандартную cpp библиотеку, вот и больше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы