Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: nik39rus от Январь 29, 2013, 11:53



Название: QGLWidget и его Update() - утечка памяти
Отправлено: 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().
Вопрос: что делать???

Заранее огромное спасибо!


Название: Re: QGLWidget и его Update() - утечка памяти
Отправлено: twp от Январь 29, 2013, 18:24
Походу утечки нет, просто так работает системный менеджер памяти.
А вообще какой смысл использовать выделение памяти для QPainter для отрисовки, если негде больше QPainter не используется? Может просто в стэке объявить:
Код
C++ (Qt)
QPainter p(this);
 


Название: Re: QGLWidget и его Update() - утечка памяти
Отправлено: nik39rus от Январь 29, 2013, 20:20
Да это как бы и не важно толком, я просто код набросал для проверки) А так возможно вы и правы. Спасибо.