Есть вот такая функция, которая запускается очень часто
void Transform::reloadPreview()
{
QString previewPath=path_;
previewPath=previewPath.replace(previewPath.section("/",-1),"Previews/"+previewPath.section("/",-1));
if(!QFile::exists(previewPath))
QFile::copy(QDir::currentPath()+"/blankPreview.jpg",previewPath);
QPixmap pxmp(previewPath);
preview_ = pxmp.toImage();
width_=preview_.width();
height_=preview_.height();
width_to_height_=(crop_.width()*width_)/(crop_.height()*height_);
}
в какой-то момент программа вылетает, с сообщением HEAP[PhotoScan.exe]:
Invalid address specified to RtlFreeHeap( 1FF70000, 22A09D98 )
При этом отладчик показывает, что программа стоит на строчке QPixmap pxmp(previewPath);
Память программа вроде при этом не катастрофически жрёт, ненужные картинки выгружаются из памяти.
Соответственно несколько вопросов
1. Знает ли кто-нибудь, чем это может быть вызвано? Смущает то, что вроде никакой очистки кучи здесь нет, а RtlFreeHeap это похоже какая-то очистка памяти. Если проблема в это время летит откуда-то ещё, то как ловить?
2. Если проблема здесь, то как её можно попробовать ловить и обрабатывать? Ставить catch на все исключения как-то сильно грубо наверное.