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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 42
#1

Из маленьких исходных текстов, большие выполняемые файлы - C++

26.10.2013, 16:50. Просмотров 1180. Ответов 31
Метки нет (Все метки)

Добрый день всем.
Возник следующий вопрос.
Для учебы делаю маленькие исходники, с маленькими функциями, например такие:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstdlib>
 
using namespace std;
int main()
{
 
int a=12,b=a%5; 
if (a%10!=b) 
b++;
a+=b;
cout<<a<<"\n";
    system("pause");
          return 0;
}
Практически все исполняемые файлы, в итоге получаются 4 с половиной мегабайта.
Может это и нормально, я незнаю, поскольку не так давно начал изучать язык. Хотелось бы узнать, как должно быть на самом деле.
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2013, 16:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Из маленьких исходных текстов, большие выполняемые файлы (C++):

Словов из маленьких букв перевести в заглавные (большие) буквы - C++
Господа-товарищи, есть программа (ниже код), которая осуществляет поиск введенного с клавиатуры слова, как в этом слове заменить маленькие...

Применение системы документирования исходных текстов Doxygen - C++
решил узнать о такой штуке и как она работает, выбрал исходник, но что-то не получаю своих комментариев! как-то получилось &quot;получить&quot;...

Как правильно инклюдить файлы исходных кодов? MSVS08 - C++
Допустим мне нужно создать класс. В Qt я делаю так: создаю файл class.h туда запихиваю описание класса и прототипы функций, а в файле...

Компилятор создает большие по объему *.exe файлы - C++
Раньше как-то не обращал внимание, точнее когда подмечал объем файла - 4 235, почему-то считал, что размер исчисляется в байтах(еще...

Операторы выполняемые над деревом - C++
Не могу разобраться с задачкой. Может кто нибудь поможет? Напишите программу, которая представляет операторы, выполняемые над деревом...

Замена маленьких букв на большие - Java SE
Доброго времени суток! Нуждаюсь в помощи. Программа работает, но не так как нужно. Задача : Вводим строку вручную. Программа...

31
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 19:48 #2
Среда какая?
1
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
26.10.2013, 20:13 #3
У меня (Code::Blocks MinGW) - 934 КБ
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.10.2013, 20:41 #4
Код из первого поста, в Code::Blocks 12.11, скомпилировался в .exe размером 467кб (Release), 946кб(Debug). Откуда берутся 4.5мгб?
0
Жанерке
34 / 34 / 2
Регистрация: 22.09.2013
Сообщений: 170
26.10.2013, 20:55 #5
у меня
задачки который сделаны на форме 2 Мб
а на консоле 400-900 Кб
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
26.10.2013, 21:11 #6
Цитата Сообщение от Ukrainis Посмотреть сообщение
Практически все исполняемые файлы, в итоге получаются 4 с половиной мегабайта.
Может это и нормально, я незнаю, поскольку не так давно начал изучать язык. Хотелось бы узнать, как должно быть на самом деле.
Заранее спасибо.
Это особенность создания выполняемых файлов, использующих стандартную библиотеку C++ на винде при помощи компилятора mingw. Для решения этой проблемы просто перейдите на линукс.

Добавлено через 4 минуты
Еще можешь добавить в опции компилятора: " -s -O3 " - это немного уменьшит размер файлов.
1
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 42
27.10.2013, 13:17  [ТС] #7
Всем доброе утро.
Среду использую Dev-C++. Это как основная, есть еще Visual Studio 2010, но пока редко использую, очень большая, так сказать.
Цитата Сообщение от programina Посмотреть сообщение
Еще можешь добавить в опции компилятора: " -s -O3 " - это немного уменьшит размер файлов.
- спасибо, это помогло, теперь файл только 523 кб занимает.
Вчера разговаривал с другом, который немного понимает в этом, так он говорит, что туда залезает debug информация, поэтому он такой большой становится.
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 14:03 #8
Цитата Сообщение от Ukrainis Посмотреть сообщение
Среду использую Dev-C++.
В Dev-C++ (все настройки по умолчанию), код из первого поста, компилируется в exe размером 465кб. Откуда у вас взялись 4.5мгб?
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 14:18 #9

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
Для решения этой проблемы просто перейдите на линукс.
Не давайте больше таких советов.

Цитата Сообщение от programina Посмотреть сообщение
Еще можешь добавить в опции компилятора: " -s -O3 " - это немного уменьшит размер файлов.
Это не "немного уменьшит", а значительно уменьшит размер.
Если заменить флаг -O3 на -Os то можно достигнуть больших результатов.
0
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 42
27.10.2013, 14:28  [ТС] #10
Цитата Сообщение от castaway Посмотреть сообщение
Если заменить флаг -O3 на -Os то можно достигнуть больших результатов.
Попробовал эту вещь, в другом файле, особых различий небыло, документ примерно такой же. Раньше тоже был 4 с чемто мега, стал 523 кб.
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 14:31 #11
Так я и не говорил что файл уменьшится в несколько раз.
Флаг -Os говорит компилятору GCC о том, что необходимо оптимизировать код по размеру, а не скорости выполнения, хоть он и включает в себя флаг -O2..
1
Ukrainis
2 / 2 / 0
Регистрация: 26.10.2013
Сообщений: 42
27.10.2013, 14:36  [ТС] #12
Значит просто неправильно понял. Спасибо за разьяснение.
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 14:41 #13
Цитата Сообщение от Ukrainis Посмотреть сообщение
Значит просто неправильно понял. Спасибо за разьяснение.
Загадка осталась. Откуда у вас брались exe в 4.5 мгб? Вложите, если не трудно, проект, при компиляции в котором, кода из первого поста, получается exe размером в 4.5 мгб.
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 14:45 #14
Цитата Сообщение от alsav22 Посмотреть сообщение
Загадка осталась.
У меня простой проект с единственной функцией MessageBeep( MB_OK ); в main занимает 915900 байт.
Ну тут я конечно специально убрал флаг -s и добавил -g3 ..

Заменил код на:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <vector>
 
template <class T>
class A : public std::vector <T> {
public:
    T operator [] ( int index ) {
        if ( index < 0 || index >= static_cast<int>(std::vector<T>::size()) ) {
            std::cout << "out of range: ";
            return 0;
        }
        std::cout << "ok: ";
        return (*static_cast<std::vector<T> *>(this))[index];
    }
};
 
int main()
{
    A <int> a;
    a.push_back( 123 );
    a.push_back( 200 );
    a.push_back( 500 );
    a.push_back( 9999 );
 
    std::cout << a[-1] << std::endl;
    std::cout << a[ 0] << std::endl;
    std::cout << a[ 3] << std::endl;
    std::cout << a[ 4] << std::endl;
}
Добавил компоновщику флаг -static. Размер: 1 518 912 байт.
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2013, 14:51 #15
Разговор про код из первого поста (приведён ТС, в качесве примера кода, при компиляции которого, получается exe - 4.5мгб).
0
27.10.2013, 14:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 14:51
Привет! Вот еще темы с ответами:

Замена букв с маленьких в большие. - Python
Написать функцию заменяющую в переданной ей строке все маленькими буквами в большие.

Установки из исходных текстов - Linux
Добрый день. Впервые столкнулсяс Linux и тем более Mandriva. Существует папка с исходным кодом. Которую я перед этим распоковал из архива. ...

Компиляция исходных текстов - Lisp
Вот решила познакомиться с ФП. Для начала lisp. Вопросы: 1. В каком виде (формате, нотации) необходимо сохранять исходные тексты...

Изменение маленьких букв на большие и наоборот - Assembler
Задача: Написать на языке ассемблер com-программу, которая выведет на экран &quot;Input string&quot;. После введения строки необходимо все прописные...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru