dynamically allocating on the stack

Uknown sireeshkodali1 at gmail.com
Sat Apr 21 07:57:41 UTC 2018


On Saturday, 21 April 2018 at 07:37:50 UTC, Mike Franklin wrote:
> Does D have some way to dynamically allocate on the stack?  I'm 
> looking for something roughly equivalent to the following C 
> code.
>
> int doSomething(size_t len)
> {
>     char stackBuffer[len + 1];
>     doSomethingElse(stackBuffer);
> }
>
> Thanks,
> Mike

The language itself doesn't have something, but you could use 
`alloca`:

---
void doSomething(size_t len)
{
     import core.stdc.stdlib, core.stdc.stdio;

     auto stackBuffer = (cast(char*) alloca(char.sizeof * len + 
1))[0 .. len + 1];
     stackBuffer[0] = 'H';
     stackBuffer[1] = '\0';
     printf("%.*s", stackBuffer.ptr);
}

void main()
{
     doSomething(2);
}
---


More information about the Digitalmars-d-learn mailing list