Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: фрагментация ОЗУ  (Прочитано 14447 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« : 14-02-2012 04:20 » 

вот такой вопрос заинтересовал - при использовании контейнеров STL локально, при использовании виджетов а-ля Qt (когда родитель сам чистит память от детей)  и т.д.  - происходит постоянное небольшое выделение памяти из кучи (через new, к примеру) и возврат , само собой.  Это всё как-нибудь влияет на фрагментацию ОЗУ или же сейчас какие-то механизмы в винде используются для этакой фоновой дефрагментации ?
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 14-02-2012 06:12 » 

Конечно, фрагментируется. Ведь у тебя объекты зафиксированы в памяти. Если бы использовалась двойная ссылочность, как в языках с динамическим управлением памятью: маленький объект-описатель и перемещаемая область памяти, то можно было бы дефрагментировать на ходу, перемещая страницы по адресному пространству.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 14-02-2012 10:25 » 

и как с этим бороться ? )
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 14-02-2012 10:28 » 

А нужно ли бороться? Вспомни "оптимизацию" Улыбаюсь

Если все же нужно, то варианта два: свой менеджер кучи или пул объектов. И то, и другое, довольно специфично.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 14-02-2012 11:41 » 

А нужно ли бороться? Вспомни "оптимизацию" Улыбаюсь
ну, то есть, пока никто не жалуется - пофиг ? ))
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 14-02-2012 11:50 » 

Именно! Пусть разработчики библиотек за нас об этом думаю. Улыбаюсь

Конечно, это "скучно и не спортивно", но универсального варианта оптимизации нет.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 14-02-2012 12:01 » 

За дефрагментацию кучи отвечает менеджер памяти. И он, как мне кажется, никак неуправляем. Он сам разбиратеся с дефрагментацией.
Дефрагментация нужна при работе с большим массивом данных. У тебя именно такая проблема? Или ты спрашиваешь "взагали"?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #7 : 14-02-2012 18:15 » 

Леш, другой вопрос Улыбаюсь А зачем ты используеш STL и Qt вместе? Вроде бы в Qt есть свои классы контейнеры.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 14-02-2012 18:30 » 

Sla, именно как теорию

Finch, вопрос не только про Qt.  Ну а что касается кутешных контейнеров - ими стараюсь не пользоваться, если только библиотека не навязывает )
Записан

Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #9 : 14-02-2012 20:12 » 

Леш. Qt полностью перекрывает STL библиотеку. Так что, лично я не вижу смысла подключать лишнию зависимость.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 14-02-2012 20:28 » 

Finch, как же "подключать зависимость", когда STL - неотъемлемая часть C++?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #11 : 14-02-2012 20:44 » 

Dimka, А что, если не использовать библиотеку STL в проекте, она все равно будет подключаться в проект? Я демал, все таки хотя бы нужны инклуды. А тут оказывается само уже есть.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #12 : 15-02-2012 03:09 » new

Finch, там же шаблоны Улыбаюсь Не используешь - и не будет кода.

Но я стараюсь не пользоваться Qt-контейнерами по другой причине - если я привык к STL и более-менее с ним разобрался, зачем мне то же самое делать с другим видом контейнеров, которые делают то же самое ? Лучше лишний раз потренирую навыки по STL. Опять же - часть кода я могу использовать из не Qt-шного проекта, и наоборот.
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines