У меня есть программа fortran. Подпрограмма как программа below.The дает ошибку сегментации после выполнения строки 1434 и печати ниже:Ошибка сегментации при доступе к массиву в программе fortran
i: 115 256 2
Segmentation fault (core dumped)
Параметры n1 = 258, n2 = 258, и n3 = 258. пг = 46480. Почему возникает ошибка сегментации?
75 double precision u(nr),v(nv),r(nr),a(0:3),c(0:3)
76 common /noautom/ u,v,r
......
196 call zero3(u,n1,n2,n3)
......
1418 subroutine zero3(z,n1,n2,n3)
1419
1420 c---------------------------------------------------------------------
1421 c---------------------------------------------------------------------
1422
1423 implicit none
1424
1425
1426 integer n1, n2, n3
1427 double precision z(n1,n2,n3)
1428 integer i1, i2, i3
1429
1430 !$omp parallel do default(shared) private(i1,i2,i3)
1431 do i3=1,n3
1432 do i2=1,n2
1433 do i1=1,n1
1434 print*,"i: ",i1, " ", i2 , " " ,i3
1435 z(i1,i2,i3)=0.0D0
1436 enddo
1437 enddo
1438 enddo
1439
1440 return
1441 end
Это, вероятно, означает, что массив, который вы передаете как 'z', не такой большой, как вы сказали. Так как мы не можем видеть определение массива в вызывающем коде, мы не можем делать больше, чем догадываться. –
Определение - двойная точность u (nr), v (nv), r (nr), a (0: 3), c (0: 3) common/noautom/u, v, r. nr is 46480 – user1651758
Пожалуйста, (а) отредактируйте информацию в вопросе и (b) покажите вызов функции. Однако ни один из массивов не находится где-то достаточно большим - 258 * 258 * 258 = 17173512 - поэтому основная свалка почти неизбежна. –