【发布时间】:2014-05-22 03:41:17
【问题描述】:
这是一个简单的程序。我预计 j>4 时会出错,但 Fortan 却显示 array(2,5)=0.0。如果它给我一个堆栈溢出错误会更有用。
你有什么意见?
program main
implicit none
integer,parameter :: n=2,z=4
!real, dimension(1:2,1:4) :: array
real,allocatable :: array(:,:)
integer :: i,j
allocate(array(n,z))
array = 0.0
array(1,1)=1.0 ; array(1,2)=2.0 ; array(1,3)=3.0 ; array(1,4)=4.0
array(2,1)=5.0 ; array(2,2)=6.0 ; array(2,3)=7.0 ; array(2,4)=8.0
do j=1,5
do i=1,2
write(*,*) i,j
write(*,*) array(i,j)
enddo
enddo
end program main
【问题讨论】:
-
仅仅因为你没有在内存中分配一个特定的空间并不意味着如果你尝试使用它就会崩溃。根据情况,它可能会或可能不会引起问题。这称为未定义行为。
标签: arrays segmentation-fault fortran