在读取一些bmp图档的时候会导致程序崩溃,图档下载
http://www.sendspace.com/file/trqq80
#include <QtCore>
#include <QtGui>
int main(int argc, char *argv[])
{
QString const prefix = "C:/Qt/crash_pictures/";
QStringList name(QStringList() << "rgb32-111110.bmp" << "rgb32bf.bmp" << "rgba32.bmp"<< "badheadersize.bmp"<<"badpalettesize.bmp");
for(int i = 0; i != name.size(); ++i){
qDebug() << name[i];
QImage read(prefix + name[i]); //crash at here
qDebug() << read.isNull(); //can't reach this line
qDebug() << read.format();
}
return 0;
}
测试环境
Qt版本
Qt4.8, compiler 是 mingw4.6.2, 32bits
Qt5.0, compiler 是 msvc2010 32bits
OS : win7 64bits
这是Qt的bug吗?或者我的使用方法有错?
有何方法可以避免?
只是读不到资料没有关系
会导致程序崩溃则很麻烦
虽然这种图档不常看到
但是我总不能寄希望与侥幸
crash
------解决方案--------------------
Qt的image可能兼容的格式不是很全,以前在XP上用图片查看器保存的png,在Qt里就打不开。
------解决方案--------------------
bmp前面是有个header做解析用的 可能是你的bmp的header不对
------解决方案--------------------
前面不是有load函数吗 read前先检查下阿
任何函数调用都可能抛出异常 包括stl 你觉得stl就是一个完备的不回抛出异常的
问题是使用者一定要知悉问题所在 如果qt 有异常 你完全可以catch掉阿
------解决方案--------------------
什么开发平台? 这个地方可能抛出的不是C++的异常,而是结构化异常
------解决方案--------------------
经测试那几个图片确实不错,程序立即死翘翘。
------解决方案--------------------
单步运行没问题 Qt4.7 + VC2008