我有一个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)
Run Code Online (Sandbox Code Playgroud)