2012-04-04 14 views
0

Blodshed Dev-C++を画像処理プロジェクトで使用しています。私たちは、ビデオフレームに接続コンポーネントラベリングを実装しています。私たちは、スタックオーバーフローを得るために何度も再帰的に再帰関数を使用しなければなりません。スタックサイズを大きくするにはどうすればよいですか?それはいくつかのリンカパラメータまたはそれに類するものによって変更することは可能ですか?Bloodshed Dev-C++でスタックサイズを増やす方法は?

void componentLabel(int i,int j,IplImage *img){ 
    // blueFrame = img->imageData[i*3*width+j*3]; 
//  greenFrame = img->imageData[i*3*width+j*3+1]; 
//  redFrame = img->imageData[i*3*width+j*3+2]; 

    if(!(img->imageData[i*3*width+j*3]==0 && img->imageData[i*3*width+j*3+1]==0 && img->imageData[i*3*width+j*3+2]==0) ){ 
      //printf("iffffff aq\n"); 
      return;  
    } 
    else{ 
      //printf("else aq %d\n",sayac_label);       
       img->imageData[i*3*width+j*3]=1; 

       new_object.pixel_count=new_object.pixel_count+1; 
       new_object.total_row=new_object.total_row+i; 
       new_object.total_col=new_object.total_col+j; 

       if(j<width-1){     
         componentLabel(i,j+1,img);       
       }    
       if(j>0){     
         componentLabel(i,j-1,img);     
       }    
       if(i<height-1){ 
         if(i>new_object.bottom.satir){ 
           new_object.bottom.satir=i; 
           new_object.bottom.sutun=j;            
         } 

         componentLabel(i+1,j,img);       
       }    
       if(i>0){ 
         if(i<new_object.top.satir){ 
           new_object.top.satir=i; 
           new_object.top.sutun=j;            
         }     
         return componentLabel(i-1,j,img);    
       }  
    } 
+0

最新のバージョンのDevC++を使用していて、5歳以上のものではないことを教えてください。 – Mysticial

+0

dev-C++ 4.9.9.2 –

+0

facepalm ....... – Mysticial

答えて

1

つだけのアプローチでは、スタックサイズが不足していないことを保証します - 再帰的な尾するアルゴリズムを定式(およびコンパイラがテール呼び出し最適化されていることを確認してください - 通常、-O3(または-O2を? )最適化フラグ)。

これを省略すると、シェルがタスクを許可する最大スタックサイズを増やしましたか?

ulimit -s <maximum stack size> 
関連する問題