2011-03-13 8 views
1

データファイル(迷路)を読み込もうとしていますが、私は自分自身をsegフォルトにコード化しているようですが、私は大学で講義に病気だったと認めますダイナミックアロケーションについて説明し、私の問題を完全に探し求めました。ここ は、コードの私の抜粋です:ここではiostreamとポインタを使ってSegフォルトを取得する

void MazeClass::ReadMaze(ifstream& mazedata) { 
    mazedata >> row >> column; // Pulls the size from the file 
    GetExit(mazedata);   // Does the same for above, just for the Exit (Required in Class) 
    GetEntrance(mazedata);  // Does the same, just for the entrance (Required in Class) 
    maze = new char*[row];  // First array of pointers for 2d array 
    for (unsigned i; i<row;i++) 
    {       // Creates the second set of arrays 
     maze[i]=new char[column]; 
    } 
    for (int y=0;y<column;y++) 
    {       // Keeping the maze inside boundries (step 1) 
     for (int x=0;x<row;x++) // (Step 2) 
     { 
      maze[x][y]=mazedata.get(); // <--- Here is where my Seg Fault happens. 
     } 
    } 

} 

は、GDBが私に語ったものです:

プログラムは、信号SIGSEGV、セグメンテーションフォールトを受けました。 MazeClass :: ReadMazeの0x08048fe9(this = 0xbffff524、mazedata = ...)MazeClass.cpp:36 36 maze [x] [y] = mazedata.get();

ありがとうございました。

今私のコードは愚かな過ちによって固定されていることを、私は今、次の問題に進むことができています: ビューMyMaze2.datのビーイング:の出力で

(gdb) run 
Starting program: /home/athetius/projects/code/netbeans/OLA4/a.out 
Please Enter Data Filename: MyMaze2.dat 


**************12142*********** ***12142* 
*   12142***** *  * 12142 * 
*   12142 ************ 12142*** 
*** * 12142   ****12142**** 
*   12142    12142 * 
* ****12142***** ** * 12142  * 
*  12142  *  12142 * * * 
*  12142  *******12142*** * 
*  12142*  ** ***12142********* 
* 12142    12142   
* 12142 *************12142***  * 
* 12142    12142 ***** ** 
**12142************* 12142 *   * 
*12142  ******* 12142   ** 
12142***************12142 
Program exited normally. 

************************* **** 
*   ***** *  * * 
*   ************ *** 
*** *    ******** 
*       * 
* ********* ** *  * 
*    *  * * * 
*    ********** * 
*  *  ** ************ 
*        
*  ****************  * 
*     ***** ** 
*************** *   * 
*  *******    ** 
****************************** 

答えて

5

最初のforループを開始する行for (unsigned i; i<row;i++)では、iは初期化されません。試してくださいunsigned i=0;。それはここで私の初期値とは何ですか?以前のコードでは、実際の問題は、数行のようです

for (unsigned i; i<row;i++)

をすべてが、その開始:)

+0

ハ、それは働いた。私はそれを見落としました、今私は何かファンキーなものを得ています。 – Athetius

+0

新しい質問をしたことがあれば、もっと運があるかもしれません。質問に回答がないときは、もっと多くの人がそれに惹かれます。実際に迷路を印刷するコードを投稿することもできます。私は助けてくれるとうれしいです。 – dappawit

1

を固定しない場合がありますか何もない?

関連する問題