g ++を使用するとコンパイルしてうまく動作するコードがC++で書かれていますが、mpiC++を使用しようとするとランタイムバスエラーが発生します。私はバスのエラーがどこで発生しているのか把握することができましたが、理由はありません。私のコードは以下の通りです:mpiC++を使用しているがg ++を使用していないバスエラー
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ループ中にバスエラーが発生しています。私の質問は二つあります。ひとつは、私は3Dマトリックスの割当を台無しにしました。私はそれをどのようにしなければなりませんか? 2つ、なぜgccとg ++で動作するのですが、mpiC++では動作しませんでしたか?
valgrindの下でコードを実行できますか。そうすれば、あなたのバグがどこにあるのかがわかるはずです。 –