On Monday, 27 April 2015 at 13:12:51 UTC, anonymous wrote:
----
void main()
{
    import std.stdio;
    import core.memory: GC;

    auto pointerInDisguise = new size_t;
    *pointerInDisguise = cast(size_t) cast(void*) new Object;

/* Not sure why stomping is necessary, but without this, the first
    try below fails. */

Probably issue 9614 - Uninitialized holes in function stack frames confuses GC - https://issues.dlang.org/show_bug.cgi?id=9614

    static void stomp() {ubyte[1024] x;}
    stomp();
    GC.collect();
writeln(cast(size_t) cast(void*) new Object == *pointerInDisguise);
        /* prints "true" => memory is reused */

    GC.collect();
writeln(cast(size_t) cast(void*) new Object == *pointerInDisguise);
        /* prints "true" => memory is reused */
}
----

Reply via email to