- #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)这句话注释掉,就可以执行通过。想请问,这到底是什么原因?