Storage allocated directly with these functions
is implicitly declared reachable
(see [basic.stc.dynamic.safety]) on allocation, ceases to be declared
reachable on deallocation, and need not cease to be declared reachable as the
result of an undeclare_reachable() call.
This allows existing
C libraries to remain unaffected by restrictions on pointers that are not safely
derived, at the expense of providing far fewer garbage collection and leak
detection options for malloc()-allocated objects.
It also allows
malloc() to be implemented with a separate allocation arena, bypassing
the normal declare_reachable() implementation.