terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc



  • QTimer timer = new QTimer(this);
    timer->start(1000);
    connect(timer,SIGNAL(timeout()),this,SLOT(updateTimer()));

    Every 1 second, function works.
    my system the linux. Runs suddenly dies.

    -----global-------
    static int arrayNum[33000];
    -------------------
    

    updateTimer(){
    unsigned short int** US_INT;
    US_INT= new unsigned short int*[255];
    for(int i = 0; i < 255; i++)
    {
    US_INT[i] = new unsigned short int[128];
    memset(US_INT[i], 0, sizeof(unsigned short int) * 128);
    }
    double x;
    double y;
    int cnt= 0;
    int nArrayCount=0;
    for(int i = 0; i < 255; i++)
    {

                for(int j=0;j<128;j++){
    
                    x=j;
    y=cnt
                    nArray[nArrayCount]=US_INT[i][j];
    
                    nArrayCount++;
    
                }
                cnt=cnt+(256/255); 
    
            }
    
    
     for(int i = 0; i < 255; i++)
            {
                delete US_INT[i];
            }
    
            delete[] US_INT;
    

    }
    program stop. and message↓
    terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc


  • Qt Champions 2016

    Hi
    It might be one of you new statements
    you can try

    try {
    code using new
    }
    catch (const std::bad_alloc&) {
    qDebug() << "alloc error";
    }

    also the arrayNum[33000];
    what do u u do with it?
    You use nArray in function. is that arrayNum ?



  • @ForestPoem said:

    nArray

    thanks.

    nArray = arrayNum

    It's my mistake. The two are the same


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.