I read on many posts on Stack Overflow that an allocatable array is deallocated when it is passed in a subroutine where the dummy argument is intent(out).
If I consider the following code :
program main
 real, dimension(:), allocatable :: myArray
 integer :: L=8
 allocate(myArray(1:L))
 call initArray(myArray)
 print *, myArray
 
contains
 subroutine initArray(myArray)
 real, dimension(:), intent(out) :: myArray
 myArray(:) = 10.0
 
 end subroutine initArray
 
end program main
the output is right. So, when deallocation occurs, memory is released but the array shape is kept. Is it exact ? Any detailed explanation would be appreciated.
I read different posts on the subject (Can I use allocatable array as an intent(out) matrix in Fortran?, What is the effect of passing an allocatable variable into a subroutine with non-allocatable argument?, ...). So I understand that the array is deallocated but I would like to understand what does it mean because in my code, the size is kept and I am also surprised that this code works.
 
     
    