static void Main()
{
int i;
int j;
j=10;
i=2;
}
是否按照声明出现的顺序在堆栈中为变量分配内存,还是在初始化时分配内存?
我认为变量按照它们被声明的顺序加载到堆栈上,而其他人则反对。因此,根据他们的说法,j首先被推到堆栈上,而我认为我被推到了堆栈中。谁是对的?
答案 0 :(得分:0)
简短的回答是你无法知道堆栈分配的确切顺序。
为了优化目的,编译器和处理器可以对操作进行重新排序。正如Ehsan在评论中已经指出的那样,当使用发布版本时,您的代码甚至可能根本不会被执行。
看看这篇文章The C# Memory Model,它可能有助于解释为什么确切的分配顺序不是事先你能知道的。