Russian Qt Forum
Ноябрь 23, 2024, 08:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGLWidget и его Update() - утечка памяти  (Прочитано 2344 раз)
nik39rus
Гость
« : Январь 29, 2013, 11:53 »

Доброго дня всем!
Столкнулся с такой проблемой: любое приложение, написанное на Qt при использовании частого update()/repaint() и т.д. увеличивает объем памяти, занимаемый приложением.
Попытка проверить данный факт окончилась следующим результатом: при вызове update() каждые 5мс занимаемая память за 10 секунд увеличивалась примерно на 1-2 мб.
Итак, код отрисовки следующий:
Код:
void GAME::paintEvent(QPaintEvent *event)
{
 qglClearColor(QColor::fromRgb(139,0,0));
 glClear(GL_COLOR_BUFFER_BIT );
 //draw smthng here by opengl
 p=new QPainter(this);
 p->setRenderHint(QPainter::Antialiasing);
 cm->draw(p);//draw smth by painter
 p->end();

     delete p;
     p=NULL;
}
В результате при включенном SampleBuffers получаем ~50мб занимаемой памяти, которая растет с каждым update().
Вопрос: что делать???

Заранее огромное спасибо!
Записан
twp
Гость
« Ответ #1 : Январь 29, 2013, 18:24 »

Походу утечки нет, просто так работает системный менеджер памяти.
А вообще какой смысл использовать выделение памяти для QPainter для отрисовки, если негде больше QPainter не используется? Может просто в стэке объявить:
Код
C++ (Qt)
QPainter p(this);
 
Записан
nik39rus
Гость
« Ответ #2 : Январь 29, 2013, 20:20 »

Да это как бы и не важно толком, я просто код набросал для проверки) А так возможно вы и правы. Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.067 секунд. Запросов: 20.