2013-02-13 76 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++)