Hi,
ich soll in Fortran programmieren, kriege aber den folgenden Fehler:
*** glibc detected *** malloc(): memory corruption (fast): 0x000000000052d8b0 *** Aborted
Wonach muss ich suchen?
Konkret habe ich ein eine Funktion
function differences2 (x,z,offsets) result(y) real(kind=dr),dimension(1:,1:),intent(in) :: x,z real(kind=dr),dimension(1:3,1:size(x,2),1:size(z,2)) :: y real(kind=dr),dimension(1:3),intent(in) :: offsets integer i,j print *,offsets print *,shape(offsets) print *,x print *,shape(x) print *,y print *,shape(y) print *,z print *,shape(z) y=1 do i=1,size(x,2) print *,'i=',i do j=1,size(z,2) print *,'j=',j ! do k=1,3 ! print * print *,i,j print *,shape(x) print *,shape(y) print *,shape(z) print *,x(:,i) print *,y(:,i,j) print *,z(:,j) print *,offsets ! print *,x(k,i) ! print *,z(k,j) ! y(k,i,j) = x(k,i) - z(k,j) - offsets(k) y(:,i,j) = x(:,i) print *,'x: ok' y(:,i,j) = y(:,i,j) - z(:,j) print *,'z: ok' y(:,i,j) = y(:,i,j) - offsets print *,'offsets: ok' ! print *,y(k,i,j) ! print *,shape(offsets) ! print *,i,j,k,offsets(k) ! end do end do print *,'next i',size(x,2) end do print *,offsets end function differences2
der übergebe ich eingeschränkte Arrays. Das klappt soundsolange gut, aber irgendwann steigt er aus. Ungefähr nach 23 von 35 aller Schleifendurchläufe der äußeren Schleife. Die Fehlermeldung scheint etwas hinterherzuhinken. Scheint aber an der Zuweisung an y zu liegen.