QT调试错误r6010中止在完全运行时被调用

QT debug error r6010 abort has been called while running perfectly

本文关键字:运行时 调用 调试 错误 r6010 QT      更新时间:2023-10-16

我正在尝试使用文件生成QWT光谱图。有500个二进制文件在UI中用滑块显示周年纪念。程序运行良好,但有时会出现"调试错误r6010中止已被调用"错误,并在任何随机情况下崩溃。我不知道为什么会出现这种情况,因为它是随机的,但它取决于滑块移动时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;
    }
}

使用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);
}