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).

Reply via email to