Deallocation of array target, but pointer still seems to have the values

42 Views Asked by At

I have the following very simple code. What I don't understand is after I deallocate my array x, I would assume that my pointer ptr no longer can be dereferenced. However, If you run the program you will see that the print statement will correctly give the values of x, and likewise give its size even though I have deallocated the array before I dereference the pointer.

Is this because my x values are still loaded on the higher memory levels (L1,L2 etc) and would need more time to refresh its state?

  program ptr_deall

  implicit none

  real, allocatable,target :: x(:)
  real, pointer :: ptr(: )


  allocate(x(100))

  x = 100

  ptr => x
  deallocate(x)
  print*, ptr,size(ptr)

  end program
0

There are 0 best solutions below