Я испытываю очень странное поведение, когда я делаю это.Я предполагаю, что это является источником проблемы, но я могу ошибаться.Если кто-то из вас может подтвердить, что это действительно неопределенное поведение, я бы хотя бы знал, что происходит
предположим, что у меня есть (не претендует на компиляцию)
subroutine X
real, allocatable :: block(:,:)
allocate(block(20,20))
call Sub(block(1:5, 1:5))
! here is undefined behavior
end subroutine
subroutine Sub(b)
real, intent(out) :: b(:,:)
b = 0.0
end subroutine
Мой вопрос:Я делаю что-то странное?У меня такое ощущение, что намерение (выход) не определяет весь блок, даже если я пропустил срез, и мне нужен вход.Можете ли вы подтвердить из стандарта?
Редактировать: inout дает то же неопределенное поведение, но передавая невырезанный массив в Sub works.Означает ли это, что нарушением стандарта является передача секционированных массивов для инициализации субблоков?
Спасибо