我有以下非常简单的代码。我不明白的是在我解除分配我的数组之后x
,我会假设我的指针ptr
不再可以被取消引用。但是,如果您运行该程序,您将看到该print
语句将正确地给出 的值x
,并且同样给出它的大小,即使我在取消引用指针之前已经释放了数组。
这是因为我的 x 值仍然加载在更高的内存级别(L1、L2 等)上,并且需要更多时间来刷新其状态?
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