On Saturday, 21 April 2018 at 23:47:41 UTC, Mike Franklin wrote:
On Saturday, 21 April 2018 at 19:06:52 UTC, Steven Schveighoffer wrote:

alloca is an intrinsic, and part of the language technically -- it has to be.

From what I can tell `alloca` is only available in the platform's C standard library (actually for Linux it appears be part of libgcc as `__builtin_alloca`; `alloca` is just and alias for it). Of course I can use 3rd party libraries like C to do this, but it seems like something useful to have in the language for certain use case and optimizations. Also, my immediate use case if for bare metal microcontroller programming where I'm intentionally avoid C and looking for a way to do this in idiomatic D.

Mike

As you have discovered alloca is a builtin: this is true for LDC, GDC and DMD, it's true for clang and i suspect most C/C++ compilers. You're not using the C library version of it, the compiler does the stack space reservation inline for you. There is no way around this.

Use `std.experimental.allocator.building_blocks.Region` with a slice from `alloca`.

or if you just want the memory

scope T[] arr = (cast(T*)alloca(n*T.sizeof))[0 .. n];

Reply via email to