You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The standard requires a compiler to diagnose an incorrect use
of a pointer in a DEALLOCATE statement. The pointer must be
associated with an entire object that was allocated as a pointer
(not allocatable) by an ALLOCATE statement.
Implement by appending a validation footer to pointer allocations.
This is an extra allocated word that encodes the base address of
the allocation. If it is not found after the data payload when
the pointer is deallocated, signal an error. There is a chance
of a false positive result, but that should be vanishingly
unlikely.
This change requires all pointer allocations (not allocatables)
to take place in the runtime in PointerAllocate(), which might
be slower in cases that could otherwise be handled with a native
memory allocation operation. I believe that memory allocation
of pointers is less common than with allocatables, which are not
affected. If this turns out to become a performance problem, we
can inline the creation and initialization of the footer word.
Fixes#78391.
0 commit comments