確定結合状態を持っている限り,ポインタの割付け解除してはなりません。DEALLOCATE 文が,不定結合状態を持つポインタか,または割り付けによって作成された指示先を持っていないポインタを宣言している場合,エラーが発生します。
ポインタが割付け配列に結合されている場合,またはオブジェクトの一部 (配列要素や部分配列など) に結合されている場合,割付け解除してはなりません。
ポインタが割付け解除された場合,その指示先 (または指示先の一部) に結合されていた他のポインタの結合状態は不定となります。
副プログラムの中で RETURN または END 文が実行されると,その手続中で宣言 (または参照) されているポインタのポインタ結合状態は,ポインタが以下のいずれかの条件を満たしていない限り,不定となります。
SAVE 属性を持っている。
現在実行中の他の有効域から参照できるモジュールの有効域中にある。
親子結合によって参照できる。
無名共通ブロック中にある。
現在実行中の他の有効域に含まれている名前付き共通ブロック中にある。
POINTER 属性で宣言されている関数の戻り値である。
結合状態が不定になったポインタは,それ以降に引用または定義することはできません。
例
次の例は,ポインタの割付け解除を示しています。
INTEGER ERR REAL, POINTER :: PTR_A(:) ... ALLOCATE (PTR_A(10), STAT=ERR) ... DEALLOCATE(PTR_A)
関連情報