|
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 9
|
|
Создание динамических объектов в стеке?21.06.2019, 20:00. Показов 1037. Ответов 9
В моей программе есть много короткоживущих объектов, которые нужно потом постоянно удалять. Внутри одного шага алгоритма они создаются и часть удаляется, по окончании шага нужно удалить всё, потом опять повторяется.
Плюс важна высокая производильность алгоритма (высокая скорость работы). Подскажите, можно ли создавать динамические объекты не в "куче", а в стеке? Плюс как бы их удалять все одним deletом, то есть выделять большой блок памяти, где все они будут лежать (допустим, что я знаю что их будет не больше 100 объектов), потом просто его разом освобождать. Думаю, это хороший способ сократить время работы, плюс к стеку скорость доступа больше. Я надеюсь, понятно описал задачу. Кто может, примеры простейшего кода реализации.
0
|
|
| 21.06.2019, 20:00 | |
|
Ответы с готовыми решениями:
9
Создание динамических объектов в фреймах Создание динамических объектов формы HELP::Создание->удаление динамических объектов |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 22.06.2019, 07:40 | ||
|
Покажи код.
0
|
||
|
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 9
|
|
| 22.06.2019, 09:47 [ТС] | |
|
Код скину позже немного, дело в том, что у меня есть три типа объектов, они ссылаются друг на друга по указателям. Я создаю, что-то типо геометрических объектов в пространстве (конкретно диаграмму Вороного). Соответственно есть узлы, рёбра и грани, каждая грань ссылается на свои рёбра, рёбра на два узла и две грани, узлы просто хранят счётчик их использования (если он равен нулю, узел нужно удалить). Так вот шаг алгоритма: разрешение имеющегося многогранники в пространстве плоскостью, соответственно, какие-то объекты отсекаются, какие-то появляются.
А как вы предлагаете? Создавать объекты в списке list? Мне кажется это будет медленно очень, на сколько я знаю просто положить объект в список - это лишнее копирование, что затратно. Плюс как ссылаться на них? Брать указатели или итераторы, это тоже довольно муторно (я пробовал что-то подобное сделать, не очень здорово получается) плюс когда я сам выделил память, я точно знаю, сколько будет жить объект, что приятно)
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 22.06.2019, 09:57 | ||
|
Добавлено через 15 секунд Покажи, хотя бы один кусок
0
|
||
|
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 9
|
||||||
| 22.06.2019, 13:07 [ТС] | ||||||
|
Вот пример кода: Здесь создаётся начальный тетраэдр который потом будет резаться плоскостями. Соответственно тетраэдр состоит из 4 узлов, 6 рёбер и 4 граней. Для пояснений, чтобы классы не писать. Узел (Yzel_m) создаётся из трёх double - его координаты. Ребро (Edge) из двух узлов (два указателя на узлы), Грань (Gran) из набора рёбер (указатели на них). Потом всё связывается. Т.е. с каждого ребра указатель на две грани. Плюс "узел" содержит "счётчик ссылок" на него (скорее счётчик инцидентных ему рёбер)
Далее уже в цикле ячейка - пирамида режется плоскостью, соответственно какие-то элементы добавляются, какие-то удаляются. Все хранится в трёх списках указателей, по окончании работы, получаем конечный многогранник.
0
|
||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 22.06.2019, 13:31 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 9
|
|
| 22.06.2019, 19:56 [ТС] | |
|
Эти встроенные списки копируют объект. Например создал ты объект:
Yzel M; Теперь что бы положить объект в список (или что хуже в вектор) list_Yzel.push_back(M) - в этой строке происходит именно копирование объекта. Так зачем мне каждый объект по сути по два раза создавать? Говори, важна производительность, сейчас программа 1.000.000 ячеек строит за 4 секунды, цель строить в 10 раз быстрее. Плюс вопрос как ссылаться на такие объекты из других? По итераторам на списки?
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||||||
| 22.06.2019, 23:02 | ||||||||||
Добавлено через 10 минут
0
|
||||||||||
|
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 9
|
|
| 23.06.2019, 14:24 [ТС] | |
|
Про вектор можно подробнее? Как выделить один раз для всех объектов? Я думал, что если добавлять объект в вектор, в какой-то момент ему придётся перемещать весь вектор в другое место в памяти, более свободное
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 23.06.2019, 14:38 | |
|
1
|
|
| 23.06.2019, 14:38 | |
|
Помогаю со студенческими работами здесь
10
Создания динамических объектов Перемещение динамических объектов Конфликт динамических и статических объектов Изменение размера динамических объектов при изменении размеров формы Создание динамических Memo и TabSheet Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|