ich tun sehe keinen prinzipiellen Unterschied in diesem Szenario.
Im Allgemeinen ALLOCATABLE arrays are more efficient. Aber in Fortran 90/95 waren POINTER-Arrays flexibler. Zum Beispiel war es nicht möglich, ALLOCATABLE-Arrays als Komponenten abgeleiteter Typen zu verwenden. Fortran 2003 behob dieses Problem. Verwenden Sie daher ALLOCATABLE-Arrays, wenn Sie können.
EDIT
wollen einfach signifikanten Unterschied im Verhalten des Programms auf dem Versuch, erwähnen, bereits zugeteilten Einheit zuzuordnen. Wenn die Entität ALLOCATABLE ist, erhalten Sie einen Laufzeitfehler. Das Programm
PROGRAM main
IMPLICIT NONE
TYPE :: foo
REAL, DIMENSION(:), ALLOCATABLE :: bar
END TYPE foo
TYPE(foo) :: my_foo
ALLOCATE (my_foo%bar(10))
ALLOCATE (my_foo%bar(10))
END PROGRAM main
mit gfortran Ergebnisse in einer solchen Fehlermeldung zusammengestellt:
Fortran runtime error: Attempting to allocate already allocated variable 'my_foo'
Im Gegensatz kann man solche Dinge mit Pointern tun.
Nur erwähnenswert, dass das Aufrufen der Anweisung 'allocate' auf einem zugeordneten Zeiger wahrscheinlich zu einem Speicherverlust führen kann (wenn kein anderer Zeiger auf das ursprüngliche Ziel verweist). –