主题:数组内存溢出
dis_cal:do j=1,sta,1
dis(j)=((est_x(ii)-sta_x(j))*eps)**2+((est_y(ii)-sta_y(j))*eps)**2
lab(j)=j
if ((j.eq.1).or.(j.eq.2)) then
print*,'j',dis(j)
end if
end do dis_cal
do n=1,n_no,1
do j=n+1,sta,1
print*,'dis',n,dis(n),j,dis(j);pause
if (dis(j).lt.dis(n)) then
temp_dis=dis(n)
dis(n)=dis(j)
dis(j)=temp_dis
f=lab(n)
lab(n)=lab(j)
lab(j)=f
end if
end do
print *,n,'st sta dis',dis(n),lab(n);pause
end do
第一次打印的结果是dis(1)= 29661,dis(2)= 31505,但是在打印的时候变成了,dis(1)= 17 ,dis(2)=18.好像是内存溢出的问题,但是应该怎么改呢?谢谢各位。第一个循环是计算dis数组的值,然后选出前n_no个数。
dis(j)=((est_x(ii)-sta_x(j))*eps)**2+((est_y(ii)-sta_y(j))*eps)**2
lab(j)=j
if ((j.eq.1).or.(j.eq.2)) then
print*,'j',dis(j)
end if
end do dis_cal
do n=1,n_no,1
do j=n+1,sta,1
print*,'dis',n,dis(n),j,dis(j);pause
if (dis(j).lt.dis(n)) then
temp_dis=dis(n)
dis(n)=dis(j)
dis(j)=temp_dis
f=lab(n)
lab(n)=lab(j)
lab(j)=f
end if
end do
print *,n,'st sta dis',dis(n),lab(n);pause
end do
第一次打印的结果是dis(1)= 29661,dis(2)= 31505,但是在打印的时候变成了,dis(1)= 17 ,dis(2)=18.好像是内存溢出的问题,但是应该怎么改呢?谢谢各位。第一个循环是计算dis数组的值,然后选出前n_no个数。