2012-02-20 3 views
-4

をクラッシュされ、ここで問題なぜプログラミングは私のプログラムがループにクラッシュされていくつかの理由

の原因をわからないイムは、私のコードです。ここで

#include<iostream> 
#include<string> 
#include<fstream> 
using namespace std; 



int main() 
{ 
    ifstream fin; 
    ofstream fout; 

    fin.open("dice.in"); 
    fout.open("dice.out"); 

    string line; 
    int boardsize; 
    int top; 
    int side; 

    fin >> boardsize >> top >> side; 
    while(boardsize != 0) 
    { 
     int ** board; 
     board = new int*[boardsize]; 

     //creates a multi dimensional dynamic array 
     for(int i = 0; i < boardsize; i++) 
     { 
      board[i] = new int[boardsize]; 
     } 

     //loop through the 2d array 
     for(int i = 0; i <= boardsize; i++) 
     { 
      getline(fin, line); 
      for(int j = 0; j < boardsize; j++) 
      { 
       if(i != 0) 
       board[i][j] = (int)line[j]; 
      } 
      line.clear(); 
     } 


     fin >> boardsize >> top >> side; 
    } 

    fin.close(); 
    fout.close(); 
} 

は私が

//loop through the 2d array 
    for(int i = 0; i < boardsize; i++)   // note < instead of <= 
    { 
     getline(fin, line); 
     for(int j = 0; j < boardsize; j++) 
     {          // not I deleted if statement 
      board[i][j] = (int)line[j]; 
     } 
     line.clear(); 
    } 

これはCでの配列は、インデックス0から開始++からですので、あなたであることを

3 6 4 
632 
562 
463 
3 6 4 
632 
556 
423 
7 6 4 
4156*64 
624*112 
23632** 
4555621 
6*42313 
4231*4* 
6154562 
0 0 0 
+3

クラッシュの行を検索するために、プリントトレースまたはステップ・バイ・ステップデバッガを使用したことがありますか?それは非常に自明で、実際にそれを見ている誰かの可能性を大幅に高めるはずです。 –

+0

デバッガを使用して理由を調べることを考えましたか? –

答えて

2
//loop through the 2d array 
    for(int i = 0; i <= boardsize; i++) 
    { 
     getline(fin, line); 
     for(int j = 0; j < boardsize; j++) 
     { 
      if(i != 0) 
      board[i][j] = (int)line[j]; 
     } 
     line.clear(); 
    } 

ニーズを使用しています入力ファイルです上記のように、サイズが3の配列をboard = new int*[boardsize];に割り当てると、この配列のインデックスは0, 1, 2, ... boardsize-1になります。あなたのアルゴリズムは1, 2, 3, ... boardsizeを使用していましたが、これはnブロックしか割り当てられておらず、セグメンテーションフォールトにつながる(実際には)n + 1ブロックにアクセスしようとしているためです。

関連する問題