Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 9

В каких случаях целесообразно динамическое выделение памяти?

08.01.2017, 18:14. Показов 2144. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня назрел вот такой вот вопросик:
Как я понимаю динамические переменные и массивы создаются с целью устранить утечки памяти, и оптимизировать программу, верно?
Тогда у меня небольшой вопрос - Целесобразным ли является создание динамических переменных? Я понимаю про массивы, они же жрут много памяти, а вот переменные. Нужно ли их создавать, или лучше обойтись простыми переменными?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2017, 18:14
Ответы с готовыми решениями:

С++ В каких случаях нужно заниматься освобождением памяти?
Я так понял в СИ и С++ нужно освобождать память когда создаешь массивы и указатели? Напишите список в каких случаях нужно этим...

Как описываются переменные типа запись? В каких случаях целесообразно использовать переменные типа запись?
1. Как описываются переменные типа запись? 2. В каких случаях целесообразно использовать переменные типа запись? 3. Из каких...

Стек, куча, хранение в памяти, динамическое выделение памяти, указатели в чем отличие?
Здравствуйте. Прочитал кучу определений но никак не пойму вообще что к чему. 1)Стек - это якобы кусок оперативной памяти который...

12
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
08.01.2017, 22:18
Цитата Сообщение от TOP-coder Посмотреть сообщение
Как я понимаю динамические переменные и массивы создаются с целью устранить утечки памяти, и оптимизировать программу, верно?
Нет. Утечка памяти - это когда память выделил через new, а доступ к указателю на эту память потерял, а значит и освобдить её уже не сможешь. Как раз таки, выделение памяти в динамической области, лежит в основе утечек памяти. Не выделил - и утекать нечему.
Цитата Сообщение от TOP-coder Посмотреть сообщение
Нужно ли их создавать, или лучше обойтись простыми переменными?
Если можно обойтись, то лучше обойтись. То же касается и массивов.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13177 / 6813 / 1821
Регистрация: 18.10.2014
Сообщений: 17,238
08.01.2017, 22:30
Цитата Сообщение от TOP-coder Посмотреть сообщение
Как я понимаю динамические переменные и массивы создаются с целью устранить утечки памяти, и оптимизировать программу, верно?
Нет. Это вообще бессмыслица какая-то. Все утечки памяти - именно из-за динамических переменных. Не было бы динамических переменных - не было бы утечек. Поэтому откуда могла взяться такая странная формулировка, как "с целью устранить утечки памяти" - не ясно.

Цитата Сообщение от TOP-coder Посмотреть сообщение
Целесобразным ли является создание динамических переменных? Я понимаю про массивы, они же жрут много памяти, а вот переменные.
Ничего не ясно. Что такое в вашем понимании "динамических переменные" и чем они отличаются от "динамических массивов"???

Цитата Сообщение от TOP-coder Посмотреть сообщение
Нужно ли их создавать, или лучше обойтись простыми переменными?
Динамическое выделение памяти в языках С и С++ используется в первую очередь для ручного контроля за временем жизни объекта. Ничего подобного "простые переменные" предоставить не могут.
0
 Аватар для FreeYourMind
147 / 147 / 104
Регистрация: 13.11.2016
Сообщений: 557
09.01.2017, 01:49
Динамическое выделение памяти необходимо для эффективного использования памяти компьютера. Например, мы написали какую-то программку, которая обрабатывает массив. При написании данной программы необходимо было объявить массив, то есть задать ему фиксированный размер (к примеру, от 0 до 100 элементов). Тогда данная программа будет не универсальной, ведь может обрабатывать массив размером не более 100 элементов. А если нам понадобятся всего 20 элементов, но в памяти выделится место под 100 элементов, ведь объявление массива было статическим, а такое использование памяти крайне не эффективно.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
09.01.2017, 03:03
Цитата Сообщение от TOP-coder Посмотреть сообщение
Как я понимаю динамические переменные и массивы создаются с целью устранить утечки памяти, и оптимизировать программу, верно?
1) "Резиновые" контейнеры, в которые можно напихать 100500 значений.
2) Хранение объектов фиг знает какого типа.
Если под "динамическими переменными" имелась ввиду гениальная идея написать int*var=new int, то нет, это абсолютно бессмысленное занятие.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13177 / 6813 / 1821
Регистрация: 18.10.2014
Сообщений: 17,238
09.01.2017, 03:51
Цитата Сообщение от Renji Посмотреть сообщение
Если под "динамическими переменными" имелась ввиду гениальная идея написать int*var=new int, то нет, это абсолютно бессмысленное занятие.
Не верно. Еще раз: динамическое выделение памяти в языках С и С++ используется в первую очередь для ручного контроля за временем жизни объекта. Все остальные применения - вторичны. Если мне нужен вечноживущий int, то это будет именно int *var = new int. Ничего бессмысленного в этом нет.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
09.01.2017, 03:56
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Если мне нужен вечноживущий int
я volatile писал бы, тем более new в сях нет...
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
09.01.2017, 04:10
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Если мне нужен вечноживущий int, то это будет именно int *var = new int.
Нет, это будет глобальная переменная.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13177 / 6813 / 1821
Регистрация: 18.10.2014
Сообщений: 17,238
09.01.2017, 07:44
Цитата Сообщение от Renji Посмотреть сообщение
Нет, это будет глобальная переменная.
Создание глобальных переменных фиксированно на стадии компиляции, я же хочу создать вечноживущий int на стадии выполнения. Вот вам и new int. Собственно сразу приходит в голову разделяемый счетчик ссылок в простейшей реализации некоего shared_ptr - вот он как раз будет new int. В реальном std::shared_ptr там два счетчика, но принципиальной разницы это не создает.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
09.01.2017, 08:18
Renji, а в qbasic есть new?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
09.01.2017, 08:19
Цитата Сообщение от Croessmah Посмотреть сообщение
Renji, а в qbasic есть new?
А у вас в столовой суши подают? Причем тут qbasic, если мы в разделе по C++?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
09.01.2017, 08:26
Renji, вы не поняли посыл?
Причем здесь Си, если мы в разделе C++?

Но да, я не тому написал. Извините.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
09.01.2017, 08:29
Цитата Сообщение от Croessmah Посмотреть сообщение
Renji, вы не поняли посыл?
Причем здесь Си, если мы в разделе C++?
Именно. Я абсолютно не понял какое отношение написанная мной строчка " int*var=new int" и упомянутые мной "контейнеры, в которые можно напихать 100500 значений" имеют к Си.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.01.2017, 08:29
Помогаю со студенческими работами здесь

Распределение памяти. Динамическое выделение памяти
an-1 an-2 ... a2

Динамическое выделение памяти
Необходимо выделить память с помощью функции melloc под 5 символов char. При вводе пользователем строки, в случае если выделенное место...

Динамическое выделение памяти
Всем привет. Научите, пожалуйста, правильно пользоваться динамическим выделением памяти. Допустим, у меня есть функция, где я пытался...

динамическое выделение памяти
дана целочисленная прямоугольная матрица. определить: 1) количество строк, не содержащих ни одного нулевого элемента; 2) максимальное...

Динамическое выделение памяти
Здраствуйте. Собственно сам код и вопрос: почему могу свободно выходить за границы массива? Для чего тогда размерность указывается......


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru