Convert C array pointer to a D slice without data copy

ParticlePeter via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon May 18 02:44:24 PDT 2015


On Monday, 18 May 2015 at 09:23:26 UTC, tcak wrote:
> On Monday, 18 May 2015 at 09:18:33 UTC, ParticlePeter wrote:
>> I get the point to an array from a c function, the data size 
>> from another function. The data should be only readable at the 
>> D side, but I would like to use it as a D slice without 
>> copying the data. Is this possible ?
>
> char* dataPtr;
> size_t dataLen;
>
> auto data = dataPtr[0 .. dataLen];
>
> This doesn't do any copying. BUT I am not sure what GC would be 
> doing about it. After you use it, you might want to set `data` 
> to null in case of a problem.

Thanks, works. Should be in the "Interfacing to C" Reference 
Article.


More information about the Digitalmars-d-learn mailing list