У меня есть код, написанный на C++, который компилируется и работает отлично (с разумным результатом) при использовании g ++, но когда я пытаюсь использовать 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;
Ошибка шины возникает во время трех вложенных циклов. Мой вопрос в два раза: один, я полагаю, я накрутил свое выделение для 3D-матрицы; как я должен был это сделать? Два, почему это работало с gcc и g ++, но не с mpiC++?
Не могли бы вы запустить свой код под valgrind. Это, вероятно, даст вам очень хорошее представление о том, где ваша ошибка. –