D needs emplacement new

anonymous via Digitalmars-d digitalmars-d at puremagic.com
Fri May 1 15:44:23 PDT 2015


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 */
> }
> ----



More information about the Digitalmars-d mailing list