2017-12-07 14 views
1

이 코드가 왜 분할 오류를 생성하지 않는지 이해할 수 없습니다. 코드를 컴파일하는 동안 또는 런타임에 일부 오류가 예상되었지만 올바르게 실행됩니다.할당 가능 배열에 대한 바인딩되지 않은 액세스로 인해 오류가 발생하는 이유는 무엇입니까?

program alloc 

implicit none 

real, dimension(:,:), allocatable :: myVec 

allocate(myVec(3,2))  

myVec=1. 

myVec(100,3)=10. 

write(*,*) myVec(1,1) 

return 
end 

누군가이 동작에 대해 어떤 생각을 해줄 수 있습니까?

답변

1

gfortran을 사용하면이 종류의 오류를 찾기 위해 -fbounds-check 컴파일러 플래그 (또는 -C : ifort)를 사용할 수 있습니다. 이 옵션으로 예를 컴파일 할 때, 프로그램은 생산 : 프로그램이 즉시 중단하지 않는 이유에

Fortran runtime error: Index '3' of dimension 2 of array 'myvec' above upper bound of 2 

는이 question는 자세한 내용이 포함되어 있습니다.

+0

대단히 감사합니다. mpifort와 동일합니까? – alie

+0

mpifort는 컴파일러 주위의 래퍼이며 동일합니다. –