Wrapping a C-style Array (Pointer + Length) in a Range Interface
    Rikki Cattermole via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Tue Jul  7 05:36:09 PDT 2015
    
    
  
On Tuesday, 7 July 2015 at 12:33:23 UTC, Per Nordlöw wrote:
> On Tuesday, 7 July 2015 at 12:29:04 UTC, Rikki Cattermole wrote:
>> size_t count;
>> AVStream* thePtr;
>> AVStream[] array = thePtr[0 .. count];
>>
>> That should work.
>
> Thanks.
>
> Will that reuse the existing allocate memory at `thePtr` for 
> internal storage of the D array? If so how is the GC aware of 
> this memory?
>
> Is there any tutorials, reference documentation, etc on these 
> matters?
To my knowledge it should reuse the memory and not inform the GC 
about it. It basically makes D treat that pointer like a slice.
If you need to confirm that it is doing that, just @nogc it. If 
it allocates it'll fail.
I'm not aware of much docs regarding these sort of tricks. But I 
believe it was Adam who originally discovered this little trick. 
Atleast I'm pretty sure he is how I learnt about it. On D.learn 
as well.
    
    
More information about the Digitalmars-d-learn
mailing list