does pointer refer to a heap object?
David
d at dav1d.de
Sat Jul 27 14:19:45 PDT 2013
Am 27.07.2013 20:07, schrieb Brad Anderson:
> 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).
core.thread has a function "getStackTop" and "getStackBottom", comparing
pointers to the end of the stack (feteched like with the functions
mentioned) should also work for malloc, but that's more of a hack.
PS: the not private functions are
thread_stackTop and thread_stackBottom
More information about the Digitalmars-d-learn
mailing list