- #pragma omp parallel for num_threads(2)
 -     for(int i = 0 ;i < y; i++){
 -         for(int j = 0 ;j < x;j++){
 -             QPoint point;
 -             QColor c;
 -             QPen pen;
 -             float r=0,g=0,b=0;
 -           if(values[i*x+j]>0){
 -                r = 1 ;
 -                g = 1 - values[i*x+j] / maxData ;
 -                g = g<0?0:g;
 -                b = g;
 -            }else{
 -                r = 1 +  values[i*x+j] / maxData ;
 -                r = r<0?0:r;
 -                g = r;
 -                b = 1;
 -            }
 -            /* if(i==j){
 -                 r=1;
 -                 g=0;
 -                 b=0;
 -             }*/
 -             c.setRgbF(r,g,b);
 -             pen.setColor(c);
 -             point.setX(startX+j);
 -             point.setY(startY+i);
 -             painter->setPen(pen);
 -             //printf("i = %d\tj=%d\n",i,j);
 -             painter->drawPoint(point);
 -         }
 -     }
 - #pragma omp barrier
 
单个
线程的时候是可以
执行的,在设置多个线程之后就出现Segmentation fault或者*** glibc detected *** ./seismicVS: malloc(): memory corruption (fast): 0x00000000021a380f ***。我如果把上面代码中的painter->setPen(pen)这句话注释掉,就可以执行通过。想请问,这到底是什么原因?