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;
세 개의 중첩 된 for 루프 중에 버스 오류가 발생합니다. 내 질문은 두 가지입니다. 하나는 3D 매트릭스에 대한 할당량을 망쳤습니다. 어떻게해야합니까? 둘째, 왜 gcc와 g ++에서 작동 하나 mpiC++에서는 그렇지 않은 것입니까?
valgrind에서 코드를 실행할 수 있습니까? 그러면 버그가 어디에 있는지 알 수 있습니다. –