static void arrays under garbage control?

captaindet via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Feb 26 11:18:51 PST 2015


On 2015-02-26 12:07, Steven Schveighoffer wrote:
> On 2/26/15 11:57 AM, captaindet wrote:
>> On 2015-02-26 10:07, Steven Schveighoffer wrote:
>>> Static data I believe is always scanned conservatively because no
>>> type information is stored for it ever, even on allocation (i.e.
>>> program startup).
>>
>> ouh, the confusion goes on... are you saying that
>>
>> {
>> // will be all scanned by GC for
>> // potential pointers into GC managed memory:
>> void[16] buffer0 = void;
>> ubyte[16] buffer1;
>> uint[4] buffer3;
>
> Yes, all 3 are stack based. This is not static data, which would be like uint[4] at module level. Those are also treated as scannable, as the entire stack of every thread is scanned.
>
>> // will not be scanned by GC for pointers:
>> void[] buffer4 = cast(void[])(new ubyte[16]);
>> uint[] buffer5 = cast(uint[])(new ubyte[16]);
>
> Correct, since they are allocated as ubyte[]. uint[] also would not be scanned.
>
> -Steve

got it, finally! thanks to everyone for their help.

/det


More information about the Digitalmars-d-learn mailing list