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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Ученик кода
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 76
#1

В каких случаях нужно создавать динамические переменные, а в каких статические? - C++

24.07.2014, 19:16. Просмотров 1115. Ответов 20
Метки нет (Все метки)

такой же вопрос и по массивам ! Объясните пожалуйста !
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2014, 19:16     В каких случаях нужно создавать динамические переменные, а в каких статические?
Посмотрите здесь:

C++ В каких случаях Вы используете экспорт шаблонов и для чего?
C++ <iostream> в каких случаях используется?
C++ Так в каких случаях стоит использовать наследование?
В каких случаях классы в С++ подключаются с явным указанием папки? C++
C++ В каких случаях возникает необходимость в создании своего деструктора?
C++ В каких случаях оправданно использование локальных классов?
В каких случаях необходимо включать include string C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stzer
40 / 61 / 17
Регистрация: 26.10.2013
Сообщений: 185
Завершенные тесты: 2
24.07.2014, 19:36     В каких случаях нужно создавать динамические переменные, а в каких статические? #2
Берете любую книгу по С++ и читаете.
Везде это хорошо и понятно расписано.
Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
24.07.2014, 20:40     В каких случаях нужно создавать динамические переменные, а в каких статические? #3
Ученик кода, динамическая память медленнее, но больше пространства и можно выгружать ненужные данные. Статическая быстрее. Вот и выбирайте
castaway
Эксперт С++
4872 / 3011 / 370
Регистрация: 10.11.2010
Сообщений: 11,061
Записей в блоге: 10
Завершенные тесты: 1
24.07.2014, 21:01     В каких случаях нужно создавать динамические переменные, а в каких статические? #4
Хедин, почему статическая память медленнее динамической?
MTRR тут не при чём.
Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
24.07.2014, 21:07     В каких случаях нужно создавать динамические переменные, а в каких статические? #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
castaway, динамическая выделяется медленнее, чем статическая. Нас учили так...
castaway
Эксперт С++
4872 / 3011 / 370
Регистрация: 10.11.2010
Сообщений: 11,061
Записей в блоге: 10
Завершенные тесты: 1
24.07.2014, 21:21     В каких случаях нужно создавать динамические переменные, а в каких статические? #6
Хедин, а почему ты не написал так изначально? По-моему было бы понятнее то, что ты хочешь выразить, как считаешь?
P.S.: статическая выделяется в compile-time, динамическая - в run-time.
Ученик кода
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 76
24.07.2014, 21:27  [ТС]     В каких случаях нужно создавать динамические переменные, а в каких статические? #7
Спасибо ! Вроде понял
Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
24.07.2014, 21:34     В каких случаях нужно создавать динамические переменные, а в каких статические? #8
castaway, тут уж кому как. Я посчитал, что так достаточно понятно.
NeonLost
Пес войны
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
25.07.2014, 20:35     В каких случаях нужно создавать динамические переменные, а в каких статические? #9
Цитата Сообщение от castaway Посмотреть сообщение
статическая выделяется в compile-time
надеюсь ты пошутил
Voivoid
671 / 274 / 12
Регистрация: 31.03.2013
Сообщений: 1,332
25.07.2014, 20:48     В каких случаях нужно создавать динамические переменные, а в каких статические? #10
Цитата Сообщение от NeonLost Посмотреть сообщение
надеюсь ты пошутил
А что тебе не нравится? Если сильно к терминологии не придираться, то примерно так оно и есть
Malenych
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 47
15.09.2014, 18:26     В каких случаях нужно создавать динамические переменные, а в каких статические? #11
А вообще есть ли смысл динамически инициализировать одну переменную?
Например:
C++
1
int *p = new int;
И если да, то в каких участках программы лучше применять статические переменные, а в каких динамические?
gng
626 / 472 / 127
Регистрация: 08.09.2013
Сообщений: 1,219
15.09.2014, 18:48     В каких случаях нужно создавать динамические переменные, а в каких статические? #12
Цитата Сообщение от Malenych Посмотреть сообщение
А вообще есть ли смысл динамически инициализировать одну переменную?
Например:
Код C++
1
int *p = new int;
Например, в учебных целях. Для демонстрации работы оператора new.
Цитата Сообщение от Malenych Посмотреть сообщение
И если да, то в каких участках программы лучше применять статические переменные, а в каких динамические?
В большинстве случаев используют автоматические переменные (хранятся на стеке).

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

Динамические в куче (new или malloc) - если по логике задачи массивы данных динамически появляются и исчезают. Или размер неизвестен на стадии компиляции.
Malenych
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 47
15.09.2014, 19:07     В каких случаях нужно создавать динамические переменные, а в каких статические? #13
gng, ясно, спасибо.
Например, я написал программу в 100 строчек, но в ней мне нужна переменная, которая будет хранить значение, необходимое для 1 строчки из моей программы (например, переменную логического типа для какого-либо условия).
Например:
C++
1
2
3
4
/* --- */
bool value =  (a / b) == 2 ? true : false;
if (bool) {/* ... */};
/* --- */
Все, переменная мне нужна только лишь для проверки условия (конечно инициализацию value можно вложить в условный тег if, но это в общих чертах).
Может быть в рамках производительности будет легче создать динамическую переменную value и после условного оператора освободить память (правда есть и один минус - все равно в памяти останется указатель, размером 4 байта)?

C++
1
2
3
4
5
6
/* --- */
bool *value = new bool;
*value = (a / b) == 2 ? true : false;
if (bool) {/* ... */};
delete value;
/* --- */
gng
626 / 472 / 127
Регистрация: 08.09.2013
Сообщений: 1,219
15.09.2014, 19:17     В каких случаях нужно создавать динамические переменные, а в каких статические? #14
Цитата Сообщение от Malenych Посмотреть сообщение
Может быть в рамках производительности будет легче создать динамическую переменную value
В данном случае вы только потеряете и в производительности (вызов выделения памяти) , и в памяти (указатель + сама переменная, кроме того ОС обычно выделяет память с запасом).
Автоматическая переменная здесь лучший выбор. После завершения функции память освободится.
Scrooge McDuck
Заблокирован
15.09.2014, 19:19     В каких случаях нужно создавать динамические переменные, а в каких статические? #15
Цитата Сообщение от castaway Посмотреть сообщение
статическая выделяется в compile-time
Ты хочешь сказать, что как я скомпилировал программу, в неё забился кусочек памяти моего компа и теперь всегда там сидит ? Память под статические переменные выделяется во время запуска программы.
Malenych
0 / 0 / 0
Регистрация: 02.05.2013
Сообщений: 47
15.09.2014, 19:26     В каких случаях нужно создавать динамические переменные, а в каких статические? #16
gng, хорошо, но реально ли вообще как-то освободить память, занятую статической переменной до выхода из функции?
gng
626 / 472 / 127
Регистрация: 08.09.2013
Сообщений: 1,219
15.09.2014, 19:35     В каких случаях нужно создавать динамические переменные, а в каких статические? #17
Цитата Сообщение от Malenych Посмотреть сообщение
реально ли вообще как-то освободить память, занятую статической переменной до выхода из функции?
Нет.
Статические переменные освобождаются при завершении программы.
Автоматические при выходе из функции.
Динамические при вызове free() или delete.
_Ivana
2817 / 1642 / 142
Регистрация: 01.03.2013
Сообщений: 4,672
Записей в блоге: 2
15.09.2014, 23:51     В каких случаях нужно создавать динамические переменные, а в каких статические? #18
Можно сразу отрезать себе ломоть памяти статическим массивом, а потом в программе использовать ее в самых разных целях, застолбив для себя такой кондовый пул памяти
castaway
Эксперт С++
4872 / 3011 / 370
Регистрация: 10.11.2010
Сообщений: 11,061
Записей в блоге: 10
Завершенные тесты: 1
16.09.2014, 07:22     В каких случаях нужно создавать динамические переменные, а в каких статические? #19
Scrooge McDuck, я бы сказал во время работы программы, сама программа выделяет память в стеке, об этом заботится компилятор. Это если мы говорим о локальных переменных. Для глобальных резервируется именно участок памяти в адресном пространстве самой программы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2014, 11:43     В каких случаях нужно создавать динамические переменные, а в каких статические?
Еще ссылки по теме:

Static обьект, в каких случаях применяется? C++
Написать, в каких случаях не используется конструктор копирования C++
C++ Объясните в каких случаях используеться char, а в каких string?
Написание GUI руками, без привлечения специализированных фреймворков - нужно ли и если да, то в каких случаях? C++
В каких случаях требуется работа с памятью? C++

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

Или воспользуйтесь поиском по форуму:
krv
72 / 52 / 11
Регистрация: 10.07.2014
Сообщений: 328
16.09.2014, 11:43     В каких случаях нужно создавать динамические переменные, а в каких статические? #20
Если есть возможность реализовать все на статических - к этому надо стремиться.
Очень помогает избавиться от лишних ошибок в коде.
Yandex
Объявления
16.09.2014, 11:43     В каких случаях нужно создавать динамические переменные, а в каких статические?
Ответ Создать тему
Опции темы

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