С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615

Динамическое и статическое выделение памяти

28.10.2016, 22:33. Показов 3683. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Если участок программы допускает создание некоего объекта и статически, и динамически, то какой способ лучше использовать?
Как по мне, то если лучше статически. Например, можно не беспокоиться о случайной утечки памяти.
Что скажут эксперты? Хотелось бы услышать советы из серии "best practice".

Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2016, 22:33
Ответы с готовыми решениями:

Одномерный массив, статическое выделение памяти, ошибка в объявлении
Здравствуйте. Снова надеюсь на вашу помощь.:confusion: В двух массивах записаны результаты 20 игр двух футбольных команд (если игра...

В какой момент вызывается конструктор для глобального объекта, использующего статическое выделение памяти?
В какой момент вызывается конструктор для глобального объекта, использующего статическое выделение памяти?

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

9
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
28.10.2016, 22:48
Цитата Сообщение от [progeR] Посмотреть сообщение
Что скажут эксперты? Хотелось бы услышать советы из серии "best practice".
Я, конечно, не эксперт. Да и практика только в соло-проектах у меня есть, но моё мнение очень важно!
Лучше динамически, потому что "стек не резиновый" © hoggy.
0
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
28.10.2016, 23:11
На практике переполнение стека ни разу не встречал (бесконечная рекурсия - не в счет. это баг). На стеке проще, быстрее, и безопаснее. Тотальная пропаганда RAII тому подтверждение.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.10.2016, 23:17
Цитата Сообщение от GbaLog- Посмотреть сообщение
Лучше динамически, потому что "стек не резиновый"
стек не имеет никакого отношения к статическому классу хранения)

[progeR], это зависит от ситуации.
статический объект занимает память до конца жизни программы.
это может быть не рациональным.
например, объект сделал своё дело, и больше не нужен.
зачем теперь держать под него память зазря?
тогда есть смысл подумать об автоматических объектах.
или о динамических.
0
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
28.10.2016, 23:24
хе. что-то я и не подумал, что автор имеет в виду static переменные. если так - то в топку такую статику.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
28.10.2016, 23:24
Цитата Сообщение от hoggy Посмотреть сообщение
стек не имеет никакого отношения к статическому классу хранения)
Я думаю ТС под словом "статический" имел ввиду именно "автоматический", который на стеке размещается. Он перепутал.
Хотя, не мне решать. Я опять облажался.
Это повод подучить.
0
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
28.10.2016, 23:37  [ТС]
Терминология - статический, я говорил, в противопоставление динамическому). Динамический - это куча (heap), а статический - это стек. Это имелось ввиду.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
29.10.2016, 07:59
Терминология - статический, я говорил, в противопоставление динамическому
В C++ имеются времена хранения: static, dynamic, automatic, thread local.
Посему статический != другим.
Цитата Сообщение от [progeR] Посмотреть сообщение
Это имелось ввиду.
Тогда либо нужно выражаться правильно,
либо объяснять что имеется ввиду, ибо
неправильные высказывания приводят к
соответствующим "неверным" ответам.
Цитата Сообщение от [progeR] Посмотреть сообщение
Если участок программы допускает создание некоего объекта и статически, и динамически, то какой способ лучше использовать?
Зависит от того, что это за участок и зачем всё это нужно.
Если нет необходимости использовать динамику, то зачем её использовать?
Цитата Сообщение от [progeR] Посмотреть сообщение
Например, можно не беспокоиться о случайной утечки памяти.
Ну так если где-то оно возможно,
то можно "умные" указатели заюзать.
0
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
29.10.2016, 11:31  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Зависит от того, что это за участок и зачем всё это нужно.
Открытие диалогового окна, например:
C++
1
2
3
4
5
6
void showSettingsDialog()
{
    SettingsDialog dialog(this);
    dialog.exec();
    this->setSomeValue(dialog.value());
}
или
C++
1
2
3
4
5
6
7
void showSettingsDialog()
{
    SettingsDialog *dialog = new SettingsDialog(this);
    dialog->exec();
    this->setSomeValue(dialog.->value());
    delete dialog;
}
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
29.10.2016, 20:25
Цитата Сообщение от [progeR] Посмотреть сообщение
Открытие диалогового окна
...
Цитата Сообщение от [progeR] Посмотреть сообщение
например:
Цитата Сообщение от Croessmah Посмотреть сообщение
сли нет необходимости использовать динамику, то зачем её использовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2016, 20:25
Помогаю со студенческими работами здесь

Динамическое выделение памяти
Первый раз столкнулся с такой задачей... Дали лабораторную работу: Разработать приложения, реализующее следующие функции: 1) Выделяет...

Динамическое выделение памяти
Добрый день! пытаюсь освоить С++ и дошёл до раздела динамического выделения памяти. Беру пример с сайта cppstudio.com всё работает ...

Динамическое выделение памяти
Есть следующее объявление #include<iostream> #define MAX 1000 //======================= int arr; int arr2; int arr3; ...

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

Динамическое выделение памяти
Всем здрасти.Если выделять динамически память,например: char *p=new char; и при этом не перегружать оператор new.То верны ли следующие...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru