0

この 3D マトリックスをメモリの 1 ブロックとして割り当てましたが、これに書き込もうとすると、セグメンテーション違反が発生します。2 次元では問題なく動作しますが、何らかの理由で 3 次元で問題が発生しています...割り当てのどこにエラーがあるのか​​ わかりません。私には完璧に見えます。

コードは次のとおりです。

phi = new double**[xlength];
phi[0] = new double*[xlength*ylength];
phi[0][0] = new double[xlength*ylength*tlength];
for (int i=0;i<xlength;i++)
{
    phi[i] = phi[0] + ylength*i;
    for (int j=0;j<ylength;j++)
    {
        phi[i][j] = phi[i][0] + tlength*j;
    }
}

どんな助けでも大歓迎です。(はい、3D マトリックスが必要です)

また、重要な場合は、ここでセグメンテーション違反が発生します。

for (int i = 0; i < xlength; i++)
    {
        for (int j = 0; j < ylength; j++)
        {
            phi[i][j][1] = 0.1*(4.0*i*h-i*i*h*h)
            *(2.0*j*h-j*j*h*h);
        }
    }

ただし、これは 2 次元でも機能します。

phi = new double*[xlength];
phi[0] = new double[xlength*ylength];
for (int i=0;i<xlength;i++)
{
    phi[i] = phi[0] + ylength*i;
}
4

1 に答える 1