Exception when comparing an (int)double and (int)int

前端 未结 3 1141
灰色年华
灰色年华 2021-01-27 10:36

Hey so i\'m using the pdCurses lib and stringStream to calculate and make a 5 character long string that represents a clock. It shows like 00:00, 0:00, 00.00, or 0.000. However

相关标签:
3条回答
  • 2021-01-27 10:51

    I think you're mistaken about what's throwing the exception. Where is ss defined?

    NB if you reformat your code to a more canonical style, like

    if((int)time >= 10){    
        if((int)time >= 60){
           if((int)time >= 600){   
              time_s.insert(0, min);              // 00:00
              time_s.insert(time_s.begin()+2, ':');
              time_s.insert(4, sec);
           } else {
    

    with one statement per line, the exception will tell you much more closely which statement caused the problem.

    0 讨论(0)
  • 2021-01-27 10:55

    This is a memory system assertion, it usually is triggered by allocating memory when the heap has already been corrupted. The trigger was probably this:

    time_s.insert(0, min); 
    

    However, the problem is somewhere else--somewhere where you are overwriting memory that you shouldn't.

    0 讨论(0)
  • 2021-01-27 10:59

    There's not really enough to go on here, but my guess is that the assertion is from the time_s.insert(0, min) call that's in the line along with the if((int)time >= 600) - the string is performing some reallocation and the heap has been corrupted (maybe by whatever is happening in the loop at the top of the function, but maybe somewhere else entirely).

    If you run this in a debugger and have it catch the assertion, what does the call stack look like?

    What's happening in:

    for(int r = 0;r<nrows;r++){ move(r,0); 
                                    instr((char*)_contents[r].c_str());} 
    
    0 讨论(0)
提交回复
热议问题