如何从fortran指针获取唯一值

Ste*_*ini 1 fortran fortran95

我有一个fortran指针,指的是一些分配的内存.我想"哈希"它,以便我得到一个引用该内存的唯一数字.在C中,我将指针位置转换为整数.

Ian*_*anH 6

在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)
Run Code Online (Sandbox Code Playgroud)