私はFortranで新しいコードを書いていますが、割り当て可能な配列とポインター配列のどちらを使用するかを躊躇しています。割り当て可能な配列には、ポインター配列よりも大きな利点があることをどこかで読みました。
1)メモリ内で常に隣接しているため、より効率的です
2)メモリリークは発生しません
誰かがこれを確認できますか?どちらを使用することをお勧めしますか?これら2つの選択肢の間のコードの実行速度に関して、どのような結果が得られますか?
私はFortranで新しいコードを書いていますが、割り当て可能な配列とポインター配列のどちらを使用するかを躊躇しています。割り当て可能な配列には、ポインター配列よりも大きな利点があることをどこかで読みました。
1)メモリ内で常に隣接しているため、より効率的です
2)メモリリークは発生しません
誰かがこれを確認できますか?どちらを使用することをお勧めしますか?これら2つの選択肢の間のコードの実行速度に関して、どのような結果が得られますか?
割り付け可能な配列は、配列が連続するため、より効率的なコードになる可能性があります。特に、配列がサブルーチンに渡される場合、連続しているとコンパイラが一時コピーを作成する必要がなくなります。
サブルーチン内のローカル変数 (SAVE 属性なし) (Fortran 95 以降の場合) では、割り当て可能な配列は、サブルーチンの終了時に自動的に割り当て解除され、メモリ リークが回避されます。プログラマーが不要になった配列の割り当てを解除しないという意味を除いて、アロケータブルでメモリ リークが発生することはありません。
ポインターを使用すると、ポインターを再割り当てでき、一部のメモリにアクセスできなくなり、失われます。これは、1 つの形式のリークです。アロケータブルで問題が解決する場合は、ポインターの代わりにそのメソッドを使用することをお勧めします。
ポインターを使用するいくつかの理由: 配列のセクションを取得するか、リンクされたリストなどのデータ構造を作成します。実行時に決定されるサイズの配列を作成する目的で、アロケータブルを使用します。