crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Гость_Гость_Snake_*_*
сообщение 17.4.2012, 17:57
Сообщение #1





Гости








    


Здравствуйте.
Никто не сталкивался с проблемой при удалении QTreeWidget'a? У меня упорно не хочет удаляться целиком (т.е. освобождать из-под себя всю память). При чем удаляю не какой-то производный объект, а самый стандартный Qt-овский виджет. При циличность "создать-удалить" стабильно "естся" память. С родительским QTreeView проблема та же, с QFrame - проблемы уже нет.
Гонял циклом:

uint i(0);
while (i<10000) {
QTreeWidget *w = new QTreeWidget(this);
delete w;
i++;
}

За памятью следил через Windows'ский диспетчер задач.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 18.4.2012, 8:04
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


тут неоднократно упоминалось, что диспетчер якобы неправильно показывает съетую память (хотя лично я им не верю :D ) . Допустим это так. Тогда остаётся считать, что это внутриQtшная кухня так работает. Проверить просто:

while (1)
{
QTreeWidget *w = new QTreeWidget(this);
delete w;
i++;
}


это должно проработать достаточно долго, причём потребление ОЗУ должно остановиться на некотором уровне.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 18.4.2012, 15:18
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


У меня тоже постоянно растет и не уменьшается.

Linux + htop
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 18.4.2012, 19:39
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


тогда это либо баг Qt, либо недочитанная дока

попробуй перед delete вызывать
void QTreeWidget::clear ()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
slon
  опции профиля:
сообщение 20.4.2012, 10:34
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 20.4.2012
Пользователь №: 3335

Спасибо сказали: 0 раз(а)




Репутация:   0  


clear() как-то не помогает...
Заметил, что иногда, при окончании длинного-длинного цикла, большая часть съеденной памяти освобождается... Но четкой закономерности не выявил...
Буду считать багом Qt ^_^
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 20.4.2012, 14:02
Сообщение #6


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


багофича )

короче, принцип "не отлаживай там, где не требуется" диктует вернуться к этой проблеме только тогда, когда кто-то из пользователей ощутит неудобства при работе с интерфейсом
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 19.2.2025, 2:06