From Newsgroup: comp.lang.fortran
It’s annoying to find that if you try to DEALLOCATE an ALLOCATABLE
variable that has not been ALLOCATEd (or that has already been
DEALLOCATEd), this is an error.
The usual practice is for storage-disposal calls to be harmless no-ops if called with a NULL pointer (or equivalent). This is true of the C/POSIX free(3) call <
https://manpages.debian.org/3/free.3.en.html>, for example,
and also for the “delete” statement in C++.
This way, one can simplify cleanup by 1) ensuring all temporary pointers
are initialized to NULL at the start, and 2) unconditionally freeing all
of them at the end.
I suppose Fortran tries to simplify things by handling both conventions automatically, but this still causes irritations in other places, like
loops.
--- Synchronet 3.20a-Linux NewsLink 1.114