【发布时间】:2015-10-07 06:30:20
【问题描述】:
我尝试释放指向另一个类型对象的类(*)指针。
我知道声明类型和动态类型之间的区别。我不应该能够使用类(*)指针访问对象中的任何变量。因此,在使用类(*)指针解除分配对象时,我期待一个错误。但是它工作正常。 Valgrind 也没有显示内存泄漏。
我很好奇为什么。这是否意味着“解除分配”隐式检测动态类型?任何解释将不胜感激。
class(*), pointer :: ptr => NULL()
class(point), pointer :: ptr_pnt => NULL() ! point is a derived data type
allocate( ptr_pnt )
... ! set the data in ptr_pnt
ptr => ptr_pnt
deallocate( ptr )
nullify( ptr_pnt )
【问题讨论】: