Sujet : Re: DEALLOCATE Of Non-ALLOCATEd Should Be No-Op
De : garylscott (at) *nospam* sbcglobal.net (Gary Scott)
Groupes : comp.lang.fortranDate : 17. Oct 2024, 02:57:17
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vepqtt$2jh7e$1@dont-email.me>
References : 1
User-Agent : Mozilla Thunderbird
On 10/16/2024 7:51 PM, Lawrence D'Oliveiro wrote:
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.
The way these things are handled in Fortran is to add a "stat=" specifier. Having a run time error message is standard (meaning typical) operating behavior for Fortran. I like it that way.