does pointer refer to a heap object?

Brad Anderson eco at gnuk.net
Sat Jul 27 11:07:09 PDT 2013


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


More information about the Digitalmars-d-learn mailing list