割付け配列の割付け解除

DEALLOCATE 文がその時点で割り付けられていない配列を宣言していると,エラーが発生します。

TARGET 属性を持つ割付け配列が割付け解除されると,それに結合されているすべてのポインタの割付け状態は不定となります。

RETURN または END 文が手続を終了させた場合,割付け配列の割付け状態は以下のいずれかになります。

ALLOCATED 組込み関数を使うと,割付け配列が割り付けられているかどうかを調べることができます。

	SUBROUTINE TEST
	  REAL, ALLOCATABLE, SAVE :: F(:,:)
	  REAL, ALLOCATABLE :: E(:,:,:)
	  ...
	  IF (.NOT. ALLOCATED(E)) ALLOCATE(E(2:4,7,14))
	END SUBROUTINE TEST

FSAVE 属性を持っているので,サブルーチン TEST が終了したときに,F の割付け状態は保たれます。ESAVE 属性を持っていないので,割付け解除されます。TEST が次に呼び出されると,E の状態は「割り付けられていない」となります。

関連情報