07.05.2014 22:26, Maxime Chevalier-Boisvert пишет:
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 you have a preallocated data, just using slicing will be enough. A result will be `wstring` for immutable data or `const(wchar)[]` for non-immutable, if you respect a typesystem.

If a new data is generated but you want it to be put on stack if it's small enough (you can't put big data on stack anyway) you need some allocation facility. E.g. `unstd.memory.allocation.tempAlloc` [1] will do the work.

[1] http://denis-sh.bitbucket.org/unstandard/unstd.memory.allocation.html#tempAlloc

--
Денис В. Шеломовский
Denis V. Shelomovskij

Reply via email to