2017-04-26 66 views
0

我在寫一個最終將解決8皇后問題的類。我添加了一個名爲populate的測試方法,以確保我正確創建2d數組並正確動態分配內存,但是當此方法被稱爲程序崩潰時,當我調試下面的Visual Studio錯誤時彈出:2d-Array嘗試填充時失敗

Exception thrown at 0x01281DFB in 8Queen.exe: 0xC0000005: Access violation writing location 0xCDCDCDCD. 

If there is a handler for this exception, the program may be safely continued. 

我的構造函數:

Queen::Queen(int s) 
{ 
    size = s; 
    board = new int *[size]; 

    for (int i = 0; i < size; ++i) 
     board[size] = new int[size]; 
} 

我填入方法:

void Queen::populate() 

    { 
     for (int i = 0; i < size; ++i) // for each row 
      for (int j = 0; j < size; ++j) // for each column 
       board[i][j] = 1; 
    } 

我的解構:

Queen::~Queen() 
{ 
    for (int i = 0; i < size; i++) 
     delete[] board[i]; 

    delete[] board; 
} 

我主:

int main() 
{ 
    fm::Queen board(10); 

    board.populate(); 
    board.printBoard(); 

    return 0; 
} 
+0

什麼?這對你的工作很好嗎? – BlooB

+0

以及在調試器中,我確實發生了這個錯誤,我可以發佈完整的代碼 – BlooB

+0

嘗試創建一個[mcve],它會重現錯誤並用完整的代碼更新您的問題。 – cbuchart

回答

3

在你的構造函數,你有下面這行:

board[size] = new int[size]; 

有可能的,你想這是

board[i] = new int[size]; 
+0

你是正確的問題解決,我不知道爲什麼我把那裏,謝謝你。我可以在3分鐘內選擇你的答案 – BlooB