Я хочу показать изображение на метке qt. Я получаю данные изображения в форме QByteArray
, и я загружаю его в ярлык. Ниже приведен код:После загрузки изображения примерно 500 раз эта ошибка отображается в визуальной студии QImage: из памяти, возвращая нулевое изображение
определены в конструкторе
QPixmap *pixmapTest;
pixmapTest = NULL;
следующий код в функции, которая вызывалась несколько раз:
RequestCompleted(QNetworkReply *reply)
{
if(pixmapTest){
qDebug()<<"delete showImage Pixmap Object";
delete pixmapTest;
pixmapTest = NULL;
}
pixmapTest = new QPixmap();
QByteArray jpegData = reply->readAll();
pixmapTest->loadFromData(jpegData);
ui.qtLabel->setPixmap(*pixmapTest);
}
После вызова этой функции около 500 раз, я я получаю эту ошибку
QImage: out of memory, returning null image.
Я не являюсь t получение того, что является ошибкой в вышеуказанном коде. Может кто-нибудь, пожалуйста, скажите мне, как это решить?
Похоже, вы утечка памяти. Вероятно, 'jpegData' ... – dtech
Создавать новый объект pixmap каждый раз кажется странным, лучше всего создать« pixmapTest »один раз, а затем просто вызвать' loadFromData'. См. Также: http://stackoverflow.com/questions/15316008/qimage-out-of-memory-returning-null-image –
Я предполагаю, что вам нужно сделать delete (pixMapTest) в какой-то момент. Или положите его в умный указатель, как shared_ptr – pm100