QList: Brak pamięci
Mam aplikację graficzną napisaną w Qt dla wbudowanego linuxa. Częścią tej aplikacji jest aktualizacja ekranu wyświetlacza co 250 ms. Jednak po około 8-10 godzinach aplikacja ulega awarii z błędem „QList: Out of memory”. Wyizolowałem funkcję i linie (w pewnym sensie) tam, gdzie to się dzieje, ale nie mam pojęcia, dlaczego tak się dzieje, ponieważ nie używam QList. Jedyne aktywne linie kodu w tej funkcji znajdują się na końcu tego pytania.
Zdaję sobie sprawę, że QList nigdy nie „zmniejsza” pamięci używanej do przechowywania elementów, ale nie używam QList w żadnym miejscu mojego kodu. Nazywam tylko „setStyleSheet”, aby ustawić różne czcionki i właściwości na widżetach interfejsu użytkownika (etykiety, pola tekstowe itp.) Jest więcej kodu, ale wszystko jest skomentowane, więc zakładam, że ma coś wspólnego z setStyleSheet. Czy ktoś wie, dlaczego tak się dzieje? Jeśli tak, czy wiesz o tym? Używam Q.t. 4,3 btw (ze względu na to, że jest ładowany w systemie wbudowanym, którego używam).
Bardzo dziękuję za poświęcony czas.
if(twc_rx){
ui->label_Rx->setStyleSheet("QLabel { background-color: lime; font: bold 16px 'Arial' }");
}else if(!twc_rx){
ui->label_Rx->setStyleSheet("QLabel { background-color: grey; font: bold 16px 'Arial' }");
}//line 561 to 684
if(twc_tx){
ui->label_Tx->setStyleSheet("QLabel { background-color: lime; font: bold 16px 'Arial' }");
}else{
ui->label_Tx->setStyleSheet("QLabel { background-color: grey; font: bold 16px 'Arial' }");
}if(ats_stat){
ui->label_ATS->setStyleSheet("QLabel { background-color: lime; border-radius: 10; font: bold 16px 'Arial'}");
}else{
ui->label_ATS->setStyleSheet("QLabel { background-color: red; border-radius: 10; font: bold 16px 'Arial'}");
}
if(atp_stat){
ui->label_atp2->setStyleSheet("QLabel { background-color: lime; border-radius: 10; font: bold 16px 'Arial'}");
}else{
ui->label_atp2->setStyleSheet("QLabel { background-color: red; border-radius: 10; font: bold 16px 'Arial'}");
}
if(ato_stat){
ui->label_ATO->setStyleSheet("QLabel { background-color: lime; border-radius: 10; font: bold 16px 'Arial'}");
}else{
ui->label_ATO->setStyleSheet("QLabel { background-color: red; border-radius: 10; font: bold 16px 'Arial'}");
}
EDYTOWAĆ:
Powinienem wspomnieć, że linie te są wykonywane co 250 ms na podstawie komunikatu wejściowego z innego podsystemu. Zszedłem już tą drogą i jej ślepy zaułek. To jest kod błędu.