Рисование линий и память, QGraphicsScene и QLine |
Здравствуйте, гость ( Вход | Регистрация )
Рисование линий и память, QGraphicsScene и QLine |
RazrFalcon |
7.7.2011, 18:14
Сообщение
#1
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Рисую линии(график) так:
Или:
В обоих случаях утечка памяти. Рисуется по линии каждые 100мс. За 10 мин отжирает метров 10-20. Как исправить? Точнее, как сделать так, что бы избавится от утечки памяти. При том, что мне, наверное, нужно хранить QList линий, что бы потом находит высоту в нужной точке графика посредством:
Делаю это так:
Уверен что есть более правильный способ. |
|
|
Litkevich Yuriy |
7.7.2011, 18:54
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Алексей1153 |
7.7.2011, 19:01
Сообщение
#3
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
оператором new память из кучи выделал. А кто будет обратно в кучу вертать (delete) ?
А вообще, тут тебе нужен контейнер типа QList<QLineF> Сообщение отредактировал Алексей1153 - 7.7.2011, 19:01 |
|
|
RazrFalcon |
7.7.2011, 19:20
Сообщение
#4
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Точнее, как сделать так, что бы избавится от утечки памяти. а почему ты решил, что есть утечка?Через 10 мин съело 20 метров. Прога будет работать круглосуточно, и графиков будет 8-м... Цитата А вообще, тут тебе нужен контейнер типа QList<QLineF> Самый первый код первого сообщения... Та же беда. |
|
|
Алексей1153 |
7.7.2011, 19:28
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
ладно. Тогда так:
linesList.append(QLineF(x1,y1,x2,y2)); а где очистка ? всегда только наполнение |
|
|
RazrFalcon |
7.7.2011, 20:11
Сообщение
#6
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Какая очистка? Мне же нужен "лист"... Или вы имеете ввиду "QLineF(x1,y1,x2,y2)", тогда я не знаю как его удалить =/ |
|
|
Litkevich Yuriy |
7.7.2011, 20:31
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Алексей1153 |
7.7.2011, 21:26
Сообщение
#8
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
RazrFalcon, выведи в консоль значение linesList.size() и понаблюдай
|
|
|
mks |
7.7.2011, 21:39
Сообщение
#9
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 23.12.2010 Пользователь №: 2295 Спасибо сказали: 1 раз(а) Репутация: 0 |
RazrFalcon ты по всей видимости отслеживаеш какой то длительный процесс и строишь его график. Твоя программа должна накапливать длительную статистику этого процесса (несколько суток или месяцев). Если я всё правильно понял, тогда в памяти в виде линий надо сохранять небольшой кусок этого графика, при поступлении новых данных старые удалять (можно сохранять на жёсткий диск) а новые добавлять, работать скользящим окном.
|
|
|
RazrFalcon |
7.7.2011, 23:27
Сообщение
#10
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Да, я тоже думал про "скользящее окно", просто реализация будет по сложнее.
Но данные то все равно хранятся в БД, так что должно быть норм. Цитата выведи в консоль значение linesList.size() и понаблюдай Угу, уже понял свою "ошибку".Так как прога будет обновлять значения не чаще чем раз в пару секунд, а не каждые 100мс как сейчас, то думаю проблем не будет. Сообщение отредактировал RazrFalcon - 7.7.2011, 23:28 |
|
|
Текстовая версия | Сейчас: 27.12.2024, 21:21 |