-1

プログラムでクラス関数を呼び出そうとすると、セグメンテーション違反が発生します。プログラム中、マトリックスgrid[][]は急速に変化します。グリッドの「イメージ」を特定の時間に保存して、グリッドの新しいバージョンをこの参照と比較できるようにしたいと考えています。したがって、の「画像」をgrid[][]参照行列に保存しようとすると、forループを使用してすべての値をその行列にコピーするだけです。プログラム中にいくつかのテストを実行しましたが、getreference関数中にセグメンテーション違反が発生しているようです。

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];
}
4

2 に答える 2

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

する必要があります

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

これが、セグメンテーション違反が発生した理由です。

于 2013-02-13T04:19:40.407 に答える
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++)

于 2013-02-13T04:20:46.327 に答える