2017-12-04 14 views
0

"world"という2次元配列を出力するクラスにprintWorldという関数があります。この関数を使用して端末でプログラムを実行すると、配列が出力されますが、大量の乱数が表示され、最後に "Segmentation Fault"と表示され、プログラムが終了します。私はすべてのコードが正常に動作しますが、この機能を自分のコードから取り除くとすぐに。クラス関数からのセグメンテーションフォールト

void printWorld() 
{ 
    for(int r = 0; r <= (2*WORLD_SIZE + 1); r++) 
    { 
     for(int c = 0; r <= (2*WORLD_SIZE + 1); c++) 
      cout << world[r][c]; 
     cout << endl; 
    } 
} 

これは、関数が、私は関数を呼び出していますどのようにこれはクラス

game.printWorld(); 

で書かれている方法です。それは私がこの配列は、他の人がすでに述べたように0

+4

'<=' 'for'ループ内の条件として、私はバグの匂いを嗅ぎます –

+0

あなたの配列はどれくらいの大きさですか?宣言を私たちに教えてください。 –

+1

segフォールトはおそらく 'for(int c = 0; r <=(2 * WORLD_SIZE + 1); C++)'は無限ループです( 'r'はスコープ内で決して変化しないので、そのループの)。あなたは 'c <= ...'を意味しましたか? – scohe001

答えて

2

にすべてを初期化したのに役立ちます場合は

This is what is showing in termninal

は、間違いがR」あなたが比較ループの内部です< =(2 * WORLD_SIZE + 1) '

これは無限ループを引き起こします。

変更内側のループを可能にするには:あなたのためにそれを行う必要があります

for(int c = 0; c <= (2*WORLD_SIZE + 1); c++) 
     cout << world[r][c]; 
    cout << endl; 

は:人々が使用している場合)

関連する問題