如何从fortran指针获取唯一值

如何从fortran指针获取唯一值,fortran,fortran95,Fortran,Fortran95,我有一个fortran指针,指向一些分配的内存。我想“散列”它,这样我就可以得到一个唯一的数字来引用那个内存。在C中,我将指针位置转换为整数 在Fortran 95中,我认为严格遵循标准的方式不可能做到这一点。您需要使用供应商扩展—必要的功能通常通过名为LOC或类似的固有功能提供 在Fortran 2003中,根据Fortran指针指向的对象的性质,可以将对象的C地址(其内存位置)转换为整数 USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_LOC, C_INTP

我有一个fortran指针,指向一些分配的内存。我想“散列”它,这样我就可以得到一个唯一的数字来引用那个内存。在C中,我将指针位置转换为整数

在Fortran 95中,我认为严格遵循标准的方式不可能做到这一点。您需要使用供应商扩展—必要的功能通常通过名为LOC或类似的固有功能提供

在Fortran 2003中,根据Fortran指针指向的对象的性质,可以将对象的C地址(其内存位置)转换为整数

USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_LOC, C_INTPTR_T
TYPE(thing), POINTER :: object
INTEGER(C_INTPTR_T) :: an_integer
!****
ALLOCATE(object)
an_integer = TRANSFER(C_LOC(object), an_integer)

在Fortran 95中,我不相信严格遵循标准的方式可以做到这一点。您需要使用供应商扩展—必要的功能通常通过名为LOC或类似的固有功能提供

在Fortran 2003中,根据Fortran指针指向的对象的性质,可以将对象的C地址(其内存位置)转换为整数

USE, INTRINSIC :: ISO_C_BINDING, ONLY: C_LOC, C_INTPTR_T
TYPE(thing), POINTER :: object
INTEGER(C_INTPTR_T) :: an_integer
!****
ALLOCATE(object)
an_integer = TRANSFER(C_LOC(object), an_integer)