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