Website message overhaul
Paulo Pinto
pjmlp at progtools.org
Sun Nov 20 00:40:21 PST 2011
Am 19.11.2011 21:49, schrieb Timon Gehr:
>>
>
> The fact that Nicks example works has no implications for the GC
> implementation because the two types involved in his reinterpret-casting
> don't have any indirections.
>
> Furthermore:
>
> int* a =...;
> int b = cast(int)a;
> int* c = cast(int*)b;
> // assert(a == c); // not guaranteed!
>
> The language allows the GC to move around heap data.
> What kind of GC would be impossible to implement?
I am by no means a GC expert, but I was under the impression that D
could only make use of conservative GC because of the casting tricks.
What if Nick's example had inner pointers?
align(1) struct Foo
{
int x, y;
ubyte r, g, b, a;
char[16] ident;
uint[100] data;
Foo* next;
}
Is the GC smart enough to know that Foo.next will contain garbage after
the assignment with cast? What about when I later assign a valid value
to it?
More information about the Digitalmars-d
mailing list