static array length

bearophile bearophileHUGS at lycos.com
Wed Jan 30 01:08:50 PST 2008


Saaa:
> Isn't it possible to make the .length variable for static arrays.
> Its ofcourse an error to make it longer than the original size (extra 
> property?)
> char[100] c;
> c[0..4]='1234`;
> 
> and maybe this:
> c=`1234`; // implicit length adjustment.
> Or would this break something?

Thanks to your questions the thread regarding the string literals have shown me that there are things I have to learn still regarding strings, but you can answer most of your own questions when you know a bit what the hidden array implementation is. Static arrays are nude chunks of data (probably with some information for the GC and sometimes the memory allocator of the OS too), probably allocated on the stack with alloca(), while dynamic arrays are structs of <pointer, length> allocated on the stack that point to a chunk of memory on the heap (I don't know if this is true for string literals too). The length of the static array is a compile time constant, and it's virtual at runtime, so you can't change it at runtime. (Tuples too exists only at compile time. At runtime they are just a scattered group of variables with a common way to index them).
Often knowing how things are implemented and run on the level just below the one you use is all you need to program effectively :-)

Bye,
bearophile


More information about the Digitalmars-d-learn mailing list