Deallocates allocatable arrays and pointer targets.
Syntax
DEALLOCATE (alloc-obj-list[, STAT=scalar-int-var]) |
- alloc-obj-list
is a comma-separated list of pointers or allocatable
arrays.
- STAT=scalar-int-var
returns the
error status after the statement executes. If given, it is set to
a positive value if an error is detected, and to zero otherwise.
If there is no status variable, the occurrence of an error causes
the program to terminate.
Description
The DEALLOCATE statement deallocates allocatable arrays and pointer
targets, making the memory available for reuse. A specified allocatable
array then becomes not allocated (as reported by the ALLOCATED intrinsic), while a specified pointer becomes
disassociated (as reported by the ASSOCIATED intrinsic).
An error occurs if an attempt is made to deallocate an allocatable
array that is not currently allocated or a pointer that is not associated.
Errors in the operation of DEALLOCATE can be reported by means of the optional STAT= specifier.
You can deallocate
an allocatable array by specifying the name of the array with the DEALLOCATE statement. You cannot deallocate a pointer that
points to an object that was not allocated.
Some or all of a target associated with a pointer by means
of the ALLOCATE statement can also be associated subsequently
with other pointers. However, it is not permitted to deallocate
a pointer that is not currently associated with the whole of an
allocated target object.
Deallocation of a
pointer target causes the association status of any other pointer
associated with all or part of the target to become undefined. When
a pointer is deallocated, its association status becomes disassociated,
as if a NULLIFY statement had been executed.
Examples
The following
example declares a complex array with the POINTER attribute. The ALLOCATE statement allocates target space to the array
at run-time; the amount is determined by the input values to the READ statement. Later in the program, the DEALLOCATE statement will recover the space.
COMPLEX, POINTER :: hermitian (:, :) ... READ *, m, n ALLOCATE (hermitian (m, n)) ... DEALLOCATE (hermitian, STAT = ierr) |
Related statements
ALLOCATABLE, ALLOCATE, NULLIFY, and POINTER
Related concepts
For related information, see the following: