On Wednesday, 7 May 2014 at 18:26:08 UTC, Maxime
Chevalier-Boisvert wrote:
I have a very specific use case (JIT compiler) in which I have
a pre-allocated array of wchar string data stored somewhere in
memory. I'd like to be able to create a temporary D wstring
object to pass this as a "regular" string to other functions.
For performance reasons, it would be preferable not to
dynamically allocate or copy any data. Dynamically allocating
the strings tends to trigger the D GC which severely impacts
the performance.
So, my question is, would it be possible for me to allocate a
wstring object on the stack, and manually set its string data
pointer and length? If so, how? Your wizardly help is much
appreciated.
If I read your question correctly, you just want to use wstring;
slices in D already work how you want.
auto len = 100;
auto a = new char[len];
// a (the pointer and length) is on the stack, the new memory of
length len is on the GC heap
auto b = a;
// b is also on the stack, with the same pointer and length as a
auto c = b[3 .. 40];
// c is also on the stack, with pointer equal to b.ptr + 3 and
length 37