Я не вижу принципиальной разницы в этом сценарии.
В общем случае ALLOCATABLE массивы более эффективны .Но в Fortran 90/95 массивы POINTER были более гибкими.Например, было невозможно использовать ALLOCATABLE массивы в качестве компонентов производных типов.Фортран 2003 исправил эту проблему.Поэтому используйте ALLOCATABLE массивы, когда можете.
EDIT
Просто хочу отметить существенную разницу в поведении программы при попытке выделить уже выделенную сущность.Если объект ALLOCATABLE, вы получите ошибку во время выполнения.Программа
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
, скомпилированная с gfortran, выдает следующее сообщение об ошибке:
Fortran runtime error: Attempting to allocate already allocated variable 'my_foo'
В отличие от этого вы можете делать такие вещи с помощью указателей.