QT调试错误r6010 abort在完美运行时被调用

时间:2014-09-09 08:06:27

标签: c++ qt abort qwt

我正在尝试使用文件生成QWTspectrogram。有500个二进制文件来显示UI中的滑块的动画。该程序工作正常,但有时它给出"调试错误r6010 abort已被调用"任何随机场合的错误和崩溃我不知道为什么会出现这种情况,因为它是随机的,但它取决于滑块移动时fnum的变化但不是任何固定值或时间(它不会出现在静止状态)。下面是我的程序的代码

setAlpha随着UI滑块的变化而改变。

void Plot::setAlpha( int alpha )
{
    fnum=alpha;
    d_spectrogram->setData( new mydata(fnum,dial) );
    d_spectrogram->attach( this );
    replot();
}

class mydata: public QwtRasterData
{
    typedef signed short int sBYTE;
    char filepath[35]; 
    sBYTE *fileBuf;    
    FILE *file = NULL; 
public:

    mydata(int fnum, int dial)
    {
        setInterval( Qt::XAxis, QwtInterval( 0, (area)-1 ) );
        setInterval( Qt::YAxis, QwtInterval( 0, (area)-1 ) );
        setInterval( Qt::ZAxis, QwtInterval( -dial, dial ) );

        {
            sprintf_s(filepath, "c:/mydata/uwpi%d.bin", fnum);
            fopen_s(&file,filepath, "rb");
            long fileSize = getFileSizex(file);
            fileBuf = new sBYTE[fileSize];
            fread(fileBuf, fileSize, 1, file);
            fclose(file);
        }
    }

    virtual double value( double x, double y ) const
    {

        int x_pos = static_cast<int>(x);
        int y_pos = static_cast<int>(y);
        const double c =  (fileBuf[ ((x_pos)+((area-y_pos)*area))]);
        return c;
    }
}

1 个答案:

答案 0 :(得分:0)

使用QFile,QDatasteam和QVector

解决

感谢你现在的反应......

QFile myfile;
myfile.setFileName(“c:/file.bin”);
if(!myfile.open(QIODevice::ReadOnly)) return;
QDataStream data(&myfile);
data.setByteOrder(QDataStream::LittleEndian);
QVector<qint16> result;
while(!data.atEnd()) { qint16 x; data >> x; result.append(x);
}