| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | «  : 14-02-2012 04:20 »  |  | 
 
 вот такой вопрос заинтересовал - при использовании контейнеров STL локально, при использовании виджетов а-ля Qt (когда родитель сам чистит память от детей)  и т.д.  - происходит постоянное небольшое выделение памяти из кучи (через new, к примеру) и возврат , само собой.  Это всё как-нибудь влияет на фрагментацию ОЗУ или же сейчас какие-то механизмы в винде используются для этакой фоновой дефрагментации ? |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #1 : 14-02-2012 06:12 »  |  | 
 
 Конечно, фрагментируется. Ведь у тебя объекты зафиксированы в памяти. Если бы использовалась двойная ссылочность, как в языках с динамическим управлением памятью: маленький объект-описатель и перемещаемая область памяти, то можно было бы дефрагментировать на ходу, перемещая страницы по адресному пространству. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #2 : 14-02-2012 10:25 »  |  | 
 
 и как с этим бороться ? ) |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #3 : 14-02-2012 10:28 »  |  | 
 
 А нужно ли бороться? Вспомни "оптимизацию"   Если все же нужно, то варианта два: свой менеджер кучи или пул объектов. И то, и другое, довольно специфично. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #4 : 14-02-2012 11:41 »  |  | 
 
 А нужно ли бороться? Вспомни "оптимизацию"  ну, то есть, пока никто не жалуется - пофиг ? )) |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #5 : 14-02-2012 11:50 »  |  | 
 
 Именно! Пусть разработчики библиотек за нас об этом думаю.   Конечно, это "скучно и не спортивно", но универсального варианта оптимизации нет. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #6 : 14-02-2012 12:01 »  |  | 
 
 За дефрагментацию кучи отвечает менеджер памяти. И он, как мне кажется, никак неуправляем. Он сам разбиратеся с дефрагментацией. Дефрагментация нужна при работе с большим массивом данных. У тебя именно такая проблема? Или ты спрашиваешь "взагали"?
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #7 : 14-02-2012 18:15 »  |  | 
 
 Леш, другой вопрос    А зачем ты используеш STL и Qt вместе? Вроде бы в Qt есть свои классы контейнеры.  |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #8 :  14-02-2012 18:30 »   |  | 
 
 Sla, именно как теорию
 Finch, вопрос не только про Qt.  Ну а что касается кутешных контейнеров - ими стараюсь не пользоваться, если только библиотека не навязывает )
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #9 : 14-02-2012 20:12 »  |  | 
 
 Леш. Qt полностью перекрывает STL библиотеку. Так что, лично я не вижу смысла подключать лишнию зависимость. |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| Dimka 
								ДеятельКоманда клуба    Offline 
								Пол:    | 
								|  | « Ответ #10 : 14-02-2012 20:28 »  |  | 
 
 Finch, как же "подключать зависимость", когда STL - неотъемлемая часть C++? |  
						| 
								|  |  
								|  |  Записан | 
 
 Программировать - значит понимать (К. Нюгард)Невывернутое лучше, чем вправленное (М. Аврелий)
 Многие готовы скорее умереть, чем подумать (Б. Рассел)
 |  |  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #11 : 14-02-2012 20:44 »  |  | 
 
 Dimka, А что, если не использовать библиотеку STL в проекте, она все равно будет подключаться в проект? Я демал, все таки хотя бы нужны инклуды. А тут оказывается само уже есть. |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #12 : 15-02-2012 03:09 »  |  | 
 
 Finch, там же шаблоны    Не используешь - и не будет кода.  Но я стараюсь не пользоваться Qt-контейнерами по другой причине - если я привык к STL и более-менее с ним разобрался, зачем мне то же самое делать с другим видом контейнеров, которые делают то же самое ? Лучше лишний раз потренирую навыки по STL. Опять же - часть кода я могу использовать из не Qt-шного проекта, и наоборот. |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	|  |