Ich habe einige Code in C++ geschrieben, die kompiliert und läuft gut (mit vernünftigen Ausgang), wenn g ++ verwenden, aber wenn ich versuche mpiC++ zu verwenden, erhalte ich einen Laufzeit Bus-Fehler. Ich habe herausgefunden, wo der Busfehler auftritt, aber nicht warum. Hier ist mein Code:Busfehler mit mpiC++, aber nicht mit 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;
Der Busfehler tritt während der drei verschachtelten For-Schleifen auf. Meine Frage ist zweifach: Eins, nehme ich an, ich habe meine Zuordnung für die 3D-Matrix vermasselt; Wie hätte ich es tun sollen? Zweitens, warum hat das mit gcc und g ++ funktioniert, aber nicht mit mpiC++?
Könnten Sie Ihren Code unter valgrind laufen. Das gibt Ihnen wahrscheinlich einen sehr guten Hinweis darauf, wo sich Ihr Fehler befindet. –