On Saturday, 27 July 2013 at 17:58:20 UTC, Carl Sturtivant wrote:
Given a pointer to a struct, is there a clean way to determine
if that struct is allocated on the heap or not? Or
alternatively to determine whether it has finite or infinite
lifetime (in TDPL speak)?
import core.memory, std.stdio;
struct A { }
void main()
{
A a;
auto ap = &a;
auto bp = new A;
writeln("ap", GC.addrOf(ap) ? "" : " not", " allocated with
the GC");
writeln("bp", GC.addrOf(bp) ? "" : " not", " allocated with
the GC");
}
Note that the heap is more than just GC allocated memory. C
malloc allocates on the heap but would fail the above test (as it
should).