[QT] QMessageBox (i inne klasy) zasoby pamięci

0

Witam!

Pisząc programy w QT na systemy wbudowane pod kontrolą linuxa zauważyłem, że czasem dzieją się dziwne rzeczy z zasobami (jakaś drobna operacja i program pochłania coraz więcej zasobów systemowych). Sprawdzam jak to wygląda za pomocą komendy 'top'. Gdyby to był PCet to specjalnie bym się nie przejmował, ale tu liczy oszczędność. Dla przykładu podam tu fragment kodu, wktórym wysołuję QMessageBox:

            QMessageBox *msgBox = new QMessageBox;

            if((notifications->type->value(i))=="warning") msgBox->setIcon(QMessageBox::Warning);
            else if ((notifications->type->value(i))=="info") msgBox->setIcon(QMessageBox::Information);
            else if ((notifications->type->value(i))=="error") msgBox->setIcon(QMessageBox::Critical);

            msgBox->exec();

            delete msgBox;

Fragment ten umieszczam w pętli i za każdym wywołaniem obserwuję, że gdzieś ubywa mi pamięci. Jak wykomentuję fragment, w którym ustawiam ikonę to jest zdecydowanie lepiej. Może jakieś sugestie co do tego fragmentu i ogólnie do QT i zarządzania pamiecią?

z góry dzięki
pozdrawiam
herszt

0

Może po prostu wyciek pamięci? Może musisz potem zwolnić te zasoby??

0

ile razy przechodzisz przez tą pętlę? Może ta ikony nie zwalniane przez jakiegoś managera ikon by przyspieszyć ich ładowanie w następnym wywołaniu.

0

Przez pętlę przechodzę różnie - w zależności od innej zmiennej. Samo wywołanie MessageBoxa jest oczywiście bardziej rozbudowane - ustawiany jest tytuł i zawartość. Natomiast po wnikliwej analizie właśnie ten fragment już powoduje jakieś problemy. Pamięć nie jest do końca zwalniana. Czasem jak pojawi się messagebox z tą samą ikoną to nie zużywa więcej pamięci, a czasem jednak tak. Jak widać po wywołaniu okienka usuwam je poprzez 'delete'. Więc zupełnie nie rozumiem, dlaczego tak się dzieje. Może powinienem się pozbywać okienka w jakiś inny sposób?

z góry dzięki
pozdrawiam
herszt

1 użytkowników online, w tym zalogowanych: 0, gości: 1