2013-02-13 117 views
-1

當我嘗試在程序中調用類函數時出現分段錯誤。在我的程序中,矩陣grid[][]變化很快,我希望能夠在特定時間保存網格的「圖像」,以便我可以將網格的更高版本與此參考進行比較。因此,當我嘗試將grid[][]的「圖像」保存到參考矩陣時,我只需使用for循環將所有值複製到參考矩陣。我在程序中做了一些測試,我似乎在getreference函數中出現了分段錯誤。Segmentation Fault聲明類私有變量

class lattice 
{ 
public: 
    lattice(){} // Constructor 
    ~lattice(){} // Destructor 
    void getgrid(){...} 

    //Other functions... 

    void getreference() 
    { 
    for(int a = 0; a<SIZEX; a++) 
    { 
     for(int b = 0; a<SIZEY; b++) 
     { 
      reference[a][b] = grid[a][b]; 
     } 
    } 
    } 

private: 
    short grid[SIZEX][SIZEY]; 
    short reference[SIZEX][SIZEY]; 
} 
+5

你的內部循環的條件是錯誤的。 – chris 2013-02-13 04:17:48

+0

爲了將來的參考,在這種情況下你應該做的第一件事就是添加明顯的'assert'檢查來確定你知道可能導致錯誤的條件。例如,添加'assert((a> = 0)&&(a = 0)&&(b 2013-02-13 04:26:34

回答

2
for(int b = 0; a < SIZEY; b++) 

應該

for(int b = 0; b < SIZEY; b++) 

這就是爲什麼你得到一個分段錯誤。

2
for(int a = 0; a<SIZEX; a++) 
    { 
     for(int b = 0; a<SIZEY; b++) //?? 
     { 
      reference[a][b] = grid[a][b]; 
     } 
    } 

將其更改爲for(int b = 0; b < SIZEY; b++)