g++を使用すると(妥当な出力で)正常にコンパイルおよび実行されるC ++で記述されたコードがありますが、mpic ++を使用しようとすると、ランタイムバスエラーが発生します。バスエラーが発生している場所を特定できましたが、その理由はわかりません。これが私のコードです:
one = (double *) malloc(sizeof(&one) * nx * nx * nt);
two = (double **) malloc(sizeof(&two) * nx * nx);
rho_exp = (double ***) malloc(sizeof(&rho_exp) * nx);
for(i = 0; i < nx * nx; i++)
two[i] = &one[i * nt];
for(i = 0; i < nx; i++)
rho_exp[i] = &two[i * nx];
for(i = 0; i < nx; i++)
for(j = 0; j < nx; j++)
for(k = 0; k < nt; k++)
rho_exp[i][j][k] = 0;
バスエラーは、ネストされた3つのforループ中に発生しています。私の質問は2つあります。1つは、3Dマトリックスへの割り当てを台無しにしたと思います。どうすればいいの?2つ目は、なぜこれがgccとg ++で機能したのに、mpic++では機能しなかったのでしょうか。