Утечка памяти QTreeWidget. Может баг QT ? |
Здравствуйте, гость ( Вход | Регистрация )
Утечка памяти QTreeWidget. Может баг QT ? |
dreamcode |
8.8.2010, 19:08
Сообщение
#1
|
Студент Группа: Участник Сообщений: 52 Регистрация: 2.11.2009 Пользователь №: 1201 Спасибо сказали: 1 раз(а) Репутация: 0 |
Люди вот два куска кода (вставка и удаление)
после того как добавить штук 300 элементов а потом их удалить то память не освобождается ... Мож что то не то ??? помогите плис ...!!!!! Вставка элементов : И код удаления :
|
|
|
BRE |
8.8.2010, 19:19
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
dreamcode |
8.8.2010, 19:23
Сообщение
#3
|
Студент Группа: Участник Сообщений: 52 Регистрация: 2.11.2009 Пользователь №: 1201 Спасибо сказали: 1 раз(а) Репутация: 0 |
|
|
|
BRE |
8.8.2010, 19:32
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
dreamcode |
8.8.2010, 19:34
Сообщение
#5
|
Студент Группа: Участник Сообщений: 52 Регистрация: 2.11.2009 Пользователь №: 1201 Спасибо сказали: 1 раз(а) Репутация: 0 |
Ну размер памяти которую прога жрет возрастает при добавлении .... А при удалении не уменьшается..
Если пару разков так прокрутить то из 5МБ памяти можно получить целых 17МБ... |
|
|
BRE |
8.8.2010, 19:41
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Ну размер памяти которую прога жрет возрастает при добавлении .... А при удалении не уменьшается.. Если пару разков так прокрутить то из 5МБ памяти можно получить целых 17МБ... Память растет, потому что процесс запрашивает ее у ОС для своего хипа (кучи), но после освобождения памяти в хипе она не обязательно отдается системе обратно, а продолжает использоваться для аллокации внутри процесса. Поэтому, по диспетчеру и не видно ее освобождение. В общем, диспетчер плохой инструмент для отлова утечек памяти внутри процесса. |
|
|
dreamcode |
8.8.2010, 20:06
Сообщение
#7
|
Студент Группа: Участник Сообщений: 52 Регистрация: 2.11.2009 Пользователь №: 1201 Спасибо сказали: 1 раз(а) Репутация: 0 |
но после освобождения памяти в хипе она не обязательно отдается системе обратно, а продолжает использоваться для аллокации внутри процесса. А что тогда делать в моем случае....???? можно ведь и до 100,200,300 МБ до работаться..... Ну ведь я же все освободил то оно мне уже не нада.... А чем тогда тестить утечки памяти ??? |
|
|
BRE |
8.8.2010, 20:26
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
А что тогда делать в моем случае....???? можно ведь и до 100,200,300 МБ до работаться..... Ну ведь я же все освободил то оно мне уже не нада.... А чем тогда тестить утечки памяти ??? Для linux есть хороший инструмент valgrind. Для венды не скажу, но если ты поищешь по форуму здесь и на prog.org.ru, то найдешь ответ (помню были подобные обсуждения). Насчет утечки, а если выполнить твой код 10, 20, 50 раз, память будет расти? |
|
|
DEADHUNT |
8.8.2010, 20:28
Сообщение
#9
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
бывают баги в Qt и valgrind их показывает.
|
|
|
Litkevich Yuriy |
8.8.2010, 23:55
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
for(int i=0;i<itemsCount;i++) после удаления элемента кол-во элементов в виджете станет на единицу меньше, а ты это не проверяешь.delete (ui->treeWidget->takeTopLevelItem(0)); itemsCount=0; вместо itemsCount надо всё время звать функцию, которая вернёт кол-во элементов в виджете |
|
|
Текстовая версия | Сейчас: 28.3.2024, 13:58 |