|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,550
|
|||
Когда выделять память08.10.2020, 18:18. Показов 15820. Ответов 201
Метки динамическая память (Все метки)
вот завис в моём понимании этот пункт:
когда выделять поток - в принципе поняла, когда выделять класс - в принципе поняла (чтобы разорвать зависимости) КОГДА выделять память?.. - всё-таки ещё не всегда очень хочется её выделять, чтобы потом удалять... но даже не в этом суть... а смысл первой цитаты? поделитесь please опытом кто-нибудь - когда вы выбираете создать объект на стеке, а когда вы выбираете создать объект в куче?. - какие есть предпосылки для вашего выбора? не хочу потом всё переделывать - а мне всё равно кажется, что на стеке всегда быстрее, а когда и почему лучше куча не знаю... а то ведь могу написать что попало...логично, что на стеке - определена последрвательность, но ведь при обращении к разным объектам проблем вроде не бывает... имхо... и понятно, что через стек идут параметры функций - так что получается, всё остальное, т.е. вообще всё лучше располагать в куче? какую проблему можно получить, если всё располагать на стеке? и в каком случае вообще app не запуститься при таком подходе (есть ли такая опасность)?.. есть ли какие-то критерии "must do"? и никак иначе
0
|
|||
| 08.10.2020, 18:18 | |
|
Ответы с готовыми решениями:
201
Как лучше выделять память: динамичски или в стэке?
Как динамически выделять память на один элемент массива? |
|
|
|
| 13.10.2020, 12:07 | |
|
https://www.coursera.org/lectu... -new-jSggV - тут есть немного про это.
1
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
||
| 13.10.2020, 12:33 | ||
|
На "стеке" мы и так можем начиная с С++11 выровнять память как нам надо с использованием alignas. А вот "обычный" new всегда возвращает дефолтно-выровненную память. И повлиять на это выравнивание непосредственно было нельзя.
0
|
||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|
| 13.10.2020, 12:39 | |
|
Avazart, чтобы выровнять динамическую память для работы с SSE, например. При этом стандартными средствами.
Добавлено через 2 минуты Или для того, чтобы выровнять по единичке динамический буфер, который заведомо будет использоваться в качестве хранилища "сырых" байт. До этого стандартный new все равно делал (мог делать) стандартное выравнивание. В итоге кусочек байт, в количестве от 4 до 16 (в зависимости от) уходил на выравнивание, которое никому не нужно.
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,550
|
||
| 13.10.2020, 12:51 [ТС] | ||
|
Вобщем, действительно, - -
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,550
|
|||
| 13.10.2020, 13:55 [ТС] | |||
- и даже начинать пока не хочется, раз есть c++ - пока его осилю...
0
|
|||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
||
| 13.10.2020, 13:59 | ||
|
1
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,550
|
|
| 13.10.2020, 14:20 [ТС] | |
|
всё-таки потоки потоками, а в оперативку (т.е. кучу) вмещаться хочется нормально, а не съедать её всю... за пояснения по "сырым" спасибо, но hand-made allocator я пока точно делать не буду... вектор Фреймворка или array (reading from txt) меня устраивает
0
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|
| 13.10.2020, 14:21 | |
|
0
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,550
|
|
| 13.10.2020, 15:06 [ТС] | |
|
ну я же не всегда верю "на-слово"
- мне показалось...========= просто думаю... вот распараллеливаем, например, задачу - а память ведь может забиться до отказа? - при том что потоки ещё будут стоять в очередь на ядро (да ещё со всем захваченным, получается многократно, контекстом - если потоков много)... не рационально, вероятно, получается... = это в случае, если каждый поток выделять на куче...
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 13.10.2020, 15:14 | ||
|
Но забить память до отказа ты можешь и без потоков. От них это совершенно не зависит.
0
|
||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,550
|
|
| 13.10.2020, 15:23 [ТС] | |
|
просто подумала, что на куче под 100 потоков резервируется памяти в 100 раз больше, чем под один поток...
![]() если их создавать на куче... хотя если функции для них на стеке - то согласна - проблема, вероятно, надуманая... спасибо (что будет твориться в этих функциях важнее для такой проблемы - главное в самой функции много мусора не плодить и аккуратненько данные ворочать на куче из этих функций)
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||
| 13.10.2020, 17:22 | |||
|
Добавлено через 1 минуту
1
|
|||
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,550
|
||
| 13.10.2020, 19:34 [ТС] | ||
|
Не по теме: а печалька была - когда RAM забивается до отказа и комп падает (понимаю, что оперативка, помню, что AutoCAD, верю, что графики много в нём - просто не знаю внесли ли ещё какие его потоки вклад в это)
0
|
||
|
фрилансер
6500 / 5731 / 1133
Регистрация: 11.10.2019
Сообщений: 15,332
|
|
| 13.10.2020, 19:53 | |
|
1
|
|
|
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,550
|
||
| 13.10.2020, 20:03 [ТС] | ||
|
а CPU - это процессор, у него тоже есть стэк (он маленький и быстрый - 1мб), через который гоняются функции и их аргументы... и, вероятно, объекты расположенные на стэке - всегда так думала - в этом суть ветки - когда это добрО переносить на кучу - в RAM - которая медленнее... (в начале ветки - уже вроде разобрались)
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 13.10.2020, 20:07 | ||
|
У потока есть стек, у процессора - кэш
0
|
||
| 13.10.2020, 20:16 | |
|
0
|
|
| 13.10.2020, 20:16 | |
|
Подскажите пожалуйста, правильно выделять память под lua состояние
Можно ли, используя make_shared<T> выделять память под массивы, по аналогии с функцией make_unique<T>?
Можно ли выделять память под объект класса с помощью функций calloc, malloc или realloc? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|