La asignación dinámica de la memoria (en tiempo de ejecución) se realiza mediante la instrucción ALLOCATE asignándole un espacio de memoria a una variable que halla sido declarada utilizando el atributo ALLOCATABLE,por ejemplo:
REAL, DIMENSION(:,:),ALLOCATABLE :: m ! matriz de 2 Dimensiones
INTEGER :: n ! Dimension de m
READ*, n ! Lee la dimension de m
ALLOCATE(m(1:n,1:n)) ! Solicita memoria para m
...
DEALLOCATE(m) ! Libera memoria solicitada
Se puede determinar si una variable declarada ALLOCATABLE ya se le asigno memoria utilizando la instrucción intrínseca ALLOCATED.
Los apuntadores son variables que permiten referirse a distintos objetos durante la ejecución de un programa, por ejemplo:
INTEGER, TARGET :: a, b ! Variables
INTEGER, POINTER :: p1, p2, p3 ! Apuntador
a = 1; b = 2 ! Asignacion de a y b
p1 => a; p2 => b ! Asignacion de los apuntadores
PRINT*, a, b, p1, p2 ! Escribe 1 2 1 2
p3 => p1; p1 => p2; p2 => p3 ! Asignacion de los apuntadores
PRINT*, a, b, p1, p2 ! Escribe 1 2 2 1
p1 = 3 ; a = p1 ! Asignacion de ptr2 a ptr1
PRINT*, a, b, p1, p2 ! Escribe 3 3 3 3
