動的な割付け

データ・オブジェクトには静的なものと動的なものがあります。静的なデータ・オブジェクトについては,コンパイル時に一定量のメモリー記憶域が作成され,この記憶域はプログラムが終了するまで解放されません。動的なデータ・オブジェクトについては,オブジェクトのメモリー記憶域をプログラムの実行中に作成 (割り付け) し,変更し,解放することができます。

Fortran 95/90 では,ポインタ,割付け配列,および自動割付け配列が動的なデータ・オブジェクトです。

ポインタの記憶域空間は,ALLOCATE 文で割り付けられるか,割付け済みのオブジェクトに結合されるまでは作成されません。NULLIFY 文を使うと,ポインタと指示先の結合を動的に削除することができます。

ALLOCATE 文は,割付け配列の記憶域の作成にも使用できます。DEALLOCATE 文は,以前の ALLOCATE 文で予約された記憶域を解放するために使用されます。

自動割付け配列と割付け配列の違いは,前者が手続に入るときと出るときに,それぞれ自動的に割り付けられ,割付け解除されるという点にあります。


注意:動的なメモリー割付けは,スワップ・ファイルの大きさ,実行中の他のアプリケーションが必要とするメモリーを含む様々な因子で制限されています。非常に大きな動的な割付けや他のアプリケーションが保護しているメモリーを使用しようとする動的な割付けは,「General Protection Fault」エラーを引き起こします。予期しない低い量でエラーが発生した場合,コントロール・パネルを使って仮想メモリーの大きさを変更するか,スワップ・ファイルの大きさを再定義する必要があります。

幾つかのプログラミング技法により,必要とするメモリーを最小限にすることができます。たとえば,2 つ以上の個別の配列の代わりに大きな配列を 1 つ使うことです。これ以上必要としない割付け配列は,割付け解除すべきです。


本章には,以下のトピックに関する情報があります。

関連情報