この 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;
}