1

割り当てられたメモリを参照するFortranポインタがあります。そのメモリを参照する一意の番号を取得できるように、それを「ハッシュ」したいと思います。Cでは、ポインターの位置を整数に変換します。

4

1 に答える 1

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)
于 2012-08-10T10:25:07.997 に答える