0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 76
|
|
1 | |
В каких случаях нужно создавать динамические переменные, а в каких статические?24.07.2014, 19:16. Показов 8732. Ответов 20
Метки нет (Все метки)
0
|
24.07.2014, 19:16 | |
Ответы с готовыми решениями:
20
Объясните в каких случаях используеться char, а в каких string? Написание GUI руками, без привлечения специализированных фреймворков - нужно ли и если да, то в каких случаях? <iostream> в каких случаях используется? Static обьект, в каких случаях применяется? |
134 / 104 / 60
Регистрация: 26.10.2013
Сообщений: 312
|
|
24.07.2014, 19:36 | 2 |
Берете любую книгу по С++ и читаете.
Везде это хорошо и понятно расписано.
1
|
76 / 71 / 55
Регистрация: 17.05.2014
Сообщений: 301
|
|
24.07.2014, 20:40 | 3 |
Ученик кода, динамическая память медленнее, но больше пространства и можно выгружать ненужные данные. Статическая быстрее. Вот и выбирайте
1
|
76 / 71 / 55
Регистрация: 17.05.2014
Сообщений: 301
|
|
24.07.2014, 21:07 | 5 |
Сообщение было отмечено Ученик кода как решение
Решение
castaway, динамическая выделяется медленнее, чем статическая. Нас учили так...
1
|
0 / 0 / 0
Регистрация: 12.06.2014
Сообщений: 76
|
|
24.07.2014, 21:27 [ТС] | 7 |
Спасибо ! Вроде понял
0
|
76 / 71 / 55
Регистрация: 17.05.2014
Сообщений: 301
|
|
24.07.2014, 21:34 | 8 |
castaway, тут уж кому как. Я посчитал, что так достаточно понятно.
1
|
Пес войны
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
|
|
25.07.2014, 20:35 | 9 |
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
25.07.2014, 20:48 | 10 |
А что тебе не нравится? Если сильно к терминологии не придираться, то примерно так оно и есть
0
|
0 / 0 / 2
Регистрация: 02.05.2013
Сообщений: 65
|
||||||
15.09.2014, 18:26 | 11 | |||||
А вообще есть ли смысл динамически инициализировать одну переменную?
Например:
0
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
15.09.2014, 18:48 | 12 |
Например, в учебных целях. Для демонстрации работы оператора new.
В большинстве случаев используют автоматические переменные (хранятся на стеке). Статические - как глобальные. Или, внутри функции, чтобы сохранить значение между вызовами. Или, если нужен постоянный массив достаточно большого (для стека) размера. Динамические в куче (new или malloc) - если по логике задачи массивы данных динамически появляются и исчезают. Или размер неизвестен на стадии компиляции.
1
|
0 / 0 / 2
Регистрация: 02.05.2013
Сообщений: 65
|
|||||||||||
15.09.2014, 19:07 | 13 | ||||||||||
gng, ясно, спасибо.
Например, я написал программу в 100 строчек, но в ней мне нужна переменная, которая будет хранить значение, необходимое для 1 строчки из моей программы (например, переменную логического типа для какого-либо условия). Например:
Может быть в рамках производительности будет легче создать динамическую переменную value и после условного оператора освободить память (правда есть и один минус - все равно в памяти останется указатель, размером 4 байта)?
0
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
15.09.2014, 19:17 | 14 |
В данном случае вы только потеряете и в производительности (вызов выделения памяти) , и в памяти (указатель + сама переменная, кроме того ОС обычно выделяет память с запасом).
Автоматическая переменная здесь лучший выбор. После завершения функции память освободится.
1
|
Заблокирован
|
|
15.09.2014, 19:19 | 15 |
Ты хочешь сказать, что как я скомпилировал программу, в неё забился кусочек памяти моего компа и теперь всегда там сидит ? Память под статические переменные выделяется во время запуска программы.
0
|
0 / 0 / 2
Регистрация: 02.05.2013
Сообщений: 65
|
|
15.09.2014, 19:26 | 16 |
gng, хорошо, но реально ли вообще как-то освободить память, занятую статической переменной до выхода из функции?
0
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
15.09.2014, 19:35 | 17 |
Нет.
Статические переменные освобождаются при завершении программы. Автоматические при выходе из функции. Динамические при вызове free() или delete.
1
|
16.09.2014, 07:22 | 19 |
Scrooge McDuck, я бы сказал во время работы программы, сама программа выделяет память в стеке, об этом заботится компилятор. Это если мы говорим о локальных переменных. Для глобальных резервируется именно участок памяти в адресном пространстве самой программы.
0
|
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
|
|
16.09.2014, 11:43 | 20 |
Если есть возможность реализовать все на статических - к этому надо стремиться.
Очень помогает избавиться от лишних ошибок в коде.
0
|
16.09.2014, 11:43 | |
16.09.2014, 11:43 | |
Помогаю со студенческими работами здесь
20
В каких случаях требуется работа с памятью? Написать, в каких случаях не используется конструктор копирования В каких случаях оправданно использование локальных классов? Так в каких случаях стоит использовать наследование? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |