|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
|||
Когда выделять память08.10.2020, 18:18. Показов 14449. Ответов 201
Метки динамическая память (Все метки)
вот завис в моём понимании этот пункт:
когда выделять поток - в принципе поняла, когда выделять класс - в принципе поняла (чтобы разорвать зависимости) КОГДА выделять память?.. - всё-таки ещё не всегда очень хочется её выделять, чтобы потом удалять... но даже не в этом суть... а смысл первой цитаты? поделитесь please опытом кто-нибудь - когда вы выбираете создать объект на стеке, а когда вы выбираете создать объект в куче?. - какие есть предпосылки для вашего выбора? не хочу потом всё переделывать - а мне всё равно кажется, что на стеке всегда быстрее, а когда и почему лучше куча не знаю... а то ведь могу написать что попало...логично, что на стеке - определена последрвательность, но ведь при обращении к разным объектам проблем вроде не бывает... имхо... и понятно, что через стек идут параметры функций - так что получается, всё остальное, т.е. вообще всё лучше располагать в куче? какую проблему можно получить, если всё располагать на стеке? и в каком случае вообще app не запуститься при таком подходе (есть ли такая опасность)?.. есть ли какие-то критерии "must do"? и никак иначе
0
|
|||
| 08.10.2020, 18:18 | |
|
Ответы с готовыми решениями:
201
Как лучше выделять память: динамичски или в стэке?
Как динамически выделять память на один элемент массива? |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 08.10.2020, 18:27 | ||
Сообщение было отмечено JeyCi как решение
РешениеДобавлено через 1 минуту Размер стека ограничен, т.е. большие объекты/массивы лучше выделять на куче
1
|
||
|
111 / 81 / 34
Регистрация: 18.06.2020
Сообщений: 430
|
||||||
| 08.10.2020, 18:32 | ||||||
|
JeyCi,
при выходе из функции память в стеке освобождается. Все локальные переменные хранятся в стеке. например:
Поэтому для этого надо выделять память, а потом удалять ее
1
|
||||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||||||||||||
| 08.10.2020, 18:53 | |||||||||||||
|
Стек как был, так и остался на месте, доступный нам, не важно вышли мы из функции, или нет:
2
|
|||||||||||||
|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
||||
| 08.10.2020, 19:26 [ТС] | ||||
|
- я поэтому и не хочу связываться со всеми new - потому что даже при выходе из scope непонятно, что потеряю... (ведь приходится иногда уж достаточно сильно закручивать код логически, да ещё всякие Exceptions можно словить - не норм. выходы бывают)... поэтому интересуюсь, когда же всё-таки БЕЗ new/delete никак не прожить... всегда старалась их избегать - но настало, наверно, время - расширять свой арсенал... - чтобы в полную силу реализовывать с++, а в чём сила использования кучи - не знаю...?Добавлено через 4 минуты Добавлено через 1 минуту
0
|
||||
|
111 / 81 / 34
Регистрация: 18.06.2020
Сообщений: 430
|
|
| 08.10.2020, 20:08 | |
|
1
|
|
|
|
|||
| 08.10.2020, 20:49 | |||
|
Можно его вернуть когда не надо. Да и главное можно выделить ровно столько сколько нужно на данный момент времени. Добавлено через 2 минуты Например приложение с Qt будет содержать обязательно new
1
|
|||
|
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
|
|||||||||||||||
| 08.10.2020, 21:53 | |||||||||||||||
0
|
|||||||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 08.10.2020, 22:02 | |||
|
0
|
|||
|
|
||
| 08.10.2020, 22:34 | ||
|
Добавлено через 12 минут И да на стеке быстрее, с этим нельзя не считаться, даже если не используешь new/delete явно. Именно по этому стоит делать у вектора reserve перед тем как добавлять элементы если кол-во элементов можно предсказать.
0
|
||
|
Комп_Оратор)
|
|
| 08.10.2020, 22:41 | |
|
JeyCi, бываает не только полиморфизма для, нужен указатель на кучу. Бывает (по разным причинам, не только singleton) нужно закрыть конструкторы, а создание объектов делегировать фабрике или фабричному классу. Эти друзья (они и вправду друзья) могут выделить память в куче и разместить там placement new объект и вернуть указатель. Указатель может быть и мудрым в том числе.
0
|
|
|
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
|
|||
| 08.10.2020, 22:47 | |||
|
0
|
|||
|
|
|||
| 08.10.2020, 22:51 | |||
|
Добавлено через 56 секунд Если можно создать на стеке стоит создавать на стеке для этого кажется есть даже специальные контейнеры. Если же нет - то нет. О какой значимости Вы говорите не понятно.
0
|
|||
|
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
|
||||
| 09.10.2020, 00:56 | ||||
|
Avazart,
это всё с пониманием, что для меня плюсы лишь вспомогательный в работе инструмент - стандарт и GotW от корки до корки не штудировал.
0
|
||||
|
|
|||
| 09.10.2020, 01:36 | |||
|
Но тут важнее не где именно, а какой тип storage duration. И что так стоит возвращать только константные "сущности" иначе могут быть проблемы при вызове из нескольких потоков. Добавлено через 1 минуту
0
|
|||
|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
||||||||||||
| 09.10.2020, 08:15 [ТС] | ||||||||||||
|
ну или так - в случае неудаления объекта:
а вообще - спасибо за дискуссию ![]() Добавлено через 5 минут ? ну и разве что - счётчик ссылок зарядить на фабрике ? (если надо) - пока для себя не вижу др причин использования... имхо Добавлено через 2 минуты
0
|
||||||||||||
|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
|||
| 09.10.2020, 08:58 [ТС] | |||
|
6 Tips to supercharge C++11 vector performance
я по Деструктору вектора обычно - полагаю, что такой вариант самый правильный (сначала clear, потом swap)... по Конструктору - сразу резервировать с запасом - чтобы не увеличивать каждый раз... при необходимости - увеличивать сразу на N элементов - очевидно ведь, что будет быстрее, чем увеличить N раз по одной штуке...
0
|
|||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 09.10.2020, 09:15 | |
|
0
|
|
|
262 / 151 / 33
Регистрация: 29.06.2019
Сообщений: 1,515
|
|||
| 09.10.2020, 10:04 [ТС] | |||
|
*** Три вида утечек памяти ? полагаю, по линку cppreference - это Тип (2): незапланированно долгоживущие выделения памяти ? Кликните здесь для просмотра всего текста
мой же пример - это, вероятно, Тип(1) - "Кто-то выделил память при помощи new или malloc, и так и не вызвал free или delete, чтобы высвободить память по окончании работы с ней." - т.е. при раскомментированном том, что в моём примере закомментировано - будет норм p.s. Тип (3): свободная, но неиспользуемая или непригодная для использования память - это, похоже, тот же свободный хвост после vector reserve - если его не занять чем-нибудь или не shrink_to_fit
0
|
|||
| 09.10.2020, 10:04 | |
|
Помогаю со студенческими работами здесь
20
Подскажите пожалуйста, правильно выделять память под lua состояние
Можно ли, используя make_shared<T> выделять память под массивы, по аналогии с функцией make_unique<T>?
Можно ли выделять память под объект класса с помощью функций calloc, malloc или realloc? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение
Это мой обзор планшета X220 с точки зрения школьника.
Недавно я решила попытаться уменьшить свой. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|