crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Где утекает память?, QGraphicsItem+ Scena
Гость_Денис_*
сообщение 10.5.2011, 14:46
Сообщение #1





Гости








    


(Зациклил кусок мэйна и получил не хилую утечку)
Код в мэйне
Раскрывающийся текст
  
        fx,px ... указатели на объекты класса наследуемого от QGraphicsItem .
        Razmetka(ui->doubleSpinBoxA->value(),ui->doubleSpinBoxB->value(),ui->doubleSpinBoxC->value(),ui->doubleSpinBoxD->value());
        if(fx!=NULL)delete fx;
        fx=new Graphic();
        if(f1x!=NULL) delete f1x;
        f1x=new PrGraphic();
        if(Px!=NULL) delete Px;
        ...
        scene->addItem(fx);
        scene->addItem(P1x);
        scene->addItem(Px);
        scene->addItem(Rx);
        scene->addItem(f1x);


Метод Разметка
Раскрывающийся текст
while(!vec.empty()){
        scene->removeItem(vec.at(0));
        vec.pop_front();
    }
...
text=scene->addText(t.toString(),f);
text->setPos(QPointF(i*30,600)+pog);
vec.append(text);

В классах от QGr... динамически не выделяю ни под чего.
Думаю на delete , он удаляет память на которую указывает указатель ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Antiglobalist
  опции профиля:
сообщение 10.5.2011, 21:09
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 29.3.2010
Пользователь №: 1574

Спасибо сказали: 0 раз(а)




Репутация:   0  


Место утечки нашел(Метод Разметка)
Раскрывающийся текст
QVector<QGraphicsItem *> vec;

void MainWindow::Razmetka(double a, double b, double c, double d)
{
    while(!vec.empty()){
        scene->removeItem(vec.at(0));
        vec.pop_front();
    }
    ..............
        text=scene->addText(t.toString(),f);text->setPos(QPointF(0,600-i*30)+pog);vec.append(text);
    }
}


Заменил scene->removeItem(vec.at(0)); на delete vec.at(0);

На счет NULL проверок , да можно убрать если в конструкторе указатели приравнять к NULL , иначе ошибка.
Всем Спасибо =)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.11.2024, 16:15