Statement: Dynamically creates storage for allocatable arrays and pointer targets. The storage space allocated is uninitialized.
Syntax
Description
A bound in s-spec must not be an expression containing an array inquiry function whose argument is any allocatable object in the same ALLOCATE statement; for example, the following is not permitted:
INTEGER ERR
INTEGER, ALLOCATABLE :: A(:), B(:)
...
ALLOCATE(A(10:25), B(SIZE(A)), STAT=ERR) ! A is invalid as an argument
! to function SIZE
If a STAT variable is specified, it must not be allocated in the ALLOCATE statement in which it appears. If the allocation is successful, the variable is set to zero. If the allocation is not successful, an error condition occurs, and the variable is set to a positive integer value (representing the run-time error). If no STAT variable is specified and an error condition occurs, program execution terminates.
To release the storage for an allocated array, use DEALLOCATE.
To determine whether an allocatable array is currently allocated, use the ALLOCATED intrinsic function.
To determine whether a pointer is currently associated with a target, use the ASSOCIATED intrinsic function.
See Also: ALLOCATABLE, ALLOCATED, DEALLOCATE, ASSOCIATED, POINTER, Dynamic Allocation, Pointer Assignments
Examples
!Method for creating and allocating deferred shape arrays.
INTEGER,ALLOCATABLE::matrix(:,:)
REAL, ALLOCATABLE:: vector(:)
. . .
ALLOCATE (matrix(3,5),vector(-2:N+2))
. . .
The following shows another example of the ALLOCATE statement:
INTEGER J, N, ALLOC_ERR
REAL, ALLOCATABLE :: A(:), B(:,:)
...
ALLOCATE(A(0:80), B(-3:J+1, N), STAT = ALLOC_ERR)