Static array with parameter based size?

ketmar via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Jul 11 01:28:01 PDT 2017


Miguel L wrote:

> I need to create a non-dynamic array like this
>
> void f(int x)
> {
> int[x] my_array;
> ...
>
> this does not compile as x value needs to be known at compile time. The 
> closest to this I can get is:
>
> void f(int x)
> {
> int[] my_array;
> my_array.length=x;
>
> but I don't really need a dynamic array as length is not going to change 
> inside f.
>
> What is the best way to do this?
>
> Thanks in advance

for simple cases you can use `alloca()`. it is fairly low-level, but does 
it's job.

but if your array is really big, or contains types with dtors, you'd better 
stick with `new` (or setting length). you can also put `scope(exit) delete 
my_array;` after declaration, so array will be destroyed on function exit. 
`delete` is... slightly deprecated ;-) (i.e. not recommented for wide use), 
but works, and will call dtors for you.


More information about the Digitalmars-d-learn mailing list