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