我有一些用 C++ 编写的代码,在使用 g++ 时编译和运行良好(输出合理),但是当我尝试使用 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;
在三个嵌套的 for 循环期间发生总线错误。我的问题有两个:第一,我想,我搞砸了我对 3D 矩阵的分配;我应该怎么做?二,为什么这适用于 gcc 和 g++,但不适用于 mpic++?