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.