![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Alexeis,
в стеке удобно размещать что-либо небольшое, а так-же что-либо, имеющее фиксированный размер речь идет не о дублировании, существует множество стратегий управления памятью к примеру, в realtime системах как правило происходит какая-то обработка данных, выделяется память под множество объектов, а после того как обработка закончена, все созданные объекты разрушаются и система возвращается в исходное состояние, после чего все снова повторяется. При этом может фрагментироваться память, могут быть значительные задержки, а самое главное - сложно будет добиться того, что-бы каждая итерация укладывалась в определенные временные рамки. Как правило, для того, что-бы это исправить, абсолютно все временные объекты размещают в одном большом буфере, выделенном заранее в хипе. Ну и разрушить все сразу то-же не проблема, достаточно освободить буфер, предварительно вызвав деструкторы(хотя это не всегда нужно), можно даже не освобождать буфер а использовать его повторно. Если во время обработки данных что-то пойдет не так и, к примеру, произойдет выход за границу массива, то шансов испортить кучу - мало. Так как буфер большой, и маловероятно, что ты выйдешь за его границы. Если ты будешь использовать для этого стек, то помимо данных он естественно будет содержать и коды возврата, и параметры ф-ий. И если во время обработки данных программа испортит память, то велика вероятность, что стек будет испорчен то-же. в общем, ты получишь примерно такой call stack(растет вверх):
короче, все яйца в одну корзину лучше не класть |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Так задача, то стояла в том чтобы многократно создавать и уничтожать. Повторно использовать это уже другая стратегия. Короче без дополнительной конкретизации дальше спорить бесполезно. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Создавать и разрушать не значит постоянно выделять память и возвращать её операционной системе. Lazin прав, гораздо быстрее выделять память большими кусками и уже там создавать и разрушать объекты. Память при этом возвращать операционной системе не надо, как правило. -------------------- вопросов больше чем ответов |
|||
|
||||
| 3,14 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1614 Регистрация: 18.6.2004 Где: Н. Новгород Репутация: нет Всего: 24 |
Как бы это странно не звучало, но заметной нагрузки на проц создание/удаление такой кучи объектов вроде не дает. В чем тогда прикол использования менеджеров памяти?
-------------------- Может быть, это только мой бред, Может быть, жизнь не так хороша, Может быть, я не выйду на свет, Но я летал, когда пела душа... |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| DrHex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
Короче чем меньше вызовов new\call тем быстрее.
А вообще нужно писать объекты которые могут быть использованны много раз. --------------------
google.com и это все. |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
А по времени выполнения? Профайлер что показывает? -------------------- вопросов больше чем ответов |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |