4

私は最近、指導なしで Fortran を学習し、さまざまなバージョンを試しています。私はこのサイトから見つけました:

MODULE は COMMON ブロックより優れていますか?

ほとんどの場合、はい。COMMON ブロックを使用する唯一の理由は、FORTRAN 77 コンパイラ (まだ存在します) のみを備えたコンピューターでプログラムを使用することが予想される場合、またはデータがメモリに格納される順序を制御することが非常に重要である場合です。

モジュールを使用することは、共通ブロックを使用することよりも確かに構文的に優れています。しかし、どちらの場合もメモリ使用量と割り当ての違いは何ですか? また、パフォーマンスやアクセス速度に違いはありますか? その質問は理にかなっていますか?

4

2 に答える 2

4

MSBは彼の答えにそれを持っていますが、私の意見ではそれを十分に強調していません. COMMON ブロック内の変数は、ブロックの定義の順序で正確にメモリに配置されます。このことから、動的メモリ オブジェクト (アロケータブル、ポインタ) を COMMON ブロックに入れることができないという制限がすぐに続きます。

「シーケンスの関連付け」とは、たとえば、次の 2 つの配列を大きな配列として使用できるように、変数の配置を当てにできることを意味します。

COMMON ブロックは、廃止されたとは宣言されていませんが、おそらく最新のコードには存在しません。

速度に関して言えば、変数が同じであれば、モジュール内であろうと COMMON ブロック内であろうと、アクセスに違いはありません。

于 2014-05-21T05:28:19.360 に答える