Initialisation of static immutable arrays
Lars T. Kyllingstad
public at kyllingen.NOSPAMnet
Wed Oct 6 03:16:45 PDT 2010
I have a program that uses an immutable array, the contents of which are
known at compile time. Thus, ideally, I want it to be placed in
the .rodata segment of the program.
Firstly, I seem to remember reading that using an array literal in D will
always result in a heap allocation. Is this correct?
Secondly, if the above is not true, how can I verify that the array in
the following piece of code isn't allocated and/or copied anew every time
the program runs, or even worse, every time foo() is called?
void foo()
{
static immutable int[3] = [1, 2, 3];
}
I know, RTFAsm, but some help with that would be appreciated. ;)
Thirdly, intuition tells me that when the array is immutable, the
'static' shouldn't have an effect. But experiments (i.e. printing the
adress of the array) indicate that it does. Is there some reason for
this, or is it just a shortcoming of the compiler?
-Lars
More information about the Digitalmars-d-learn
mailing list