Transitioning to a type aware Garbage Collector
Chad J
gamerChad at _spamIsBad_gmail.com
Wed Jan 24 17:54:10 PST 2007
I was hoping this would happen some day. Thank you Walter!
Walter Bright wrote:
> To improve GC performance, we need to transition to a GC that is aware
> of the types of what it is allocating.
>
> So problems can happen if the type of allocated memory is changed after
> it is allocated, via casting. The way to avoid this is to allocate as
> void[] memory that will be cast, as in:
>
> struct Foo { ... };
> Foo[] f;
>
> p = new void[100];
> f = cast(Foo[])p; // ok
> byte[] b = cast(byte[])p;
> f = cast(Foo[])b; // ok, GC still regards memory as void[]
>
> rather than:
>
> p = new byte[100];
> f = cast(Foo[])p; // will likely eventually corrupt memory
>
> The GC will regard void[] as a chunk of memory containing arbitrary data
> of arbitrary types, and so will treat it conservatively.
>
> In general, regard memory allocated by the GC as anything other than
> void[] as being *strongly typed*.
More information about the Digitalmars-d-announce
mailing list