何时为c#中的值类型分配内存?

时间:2016-12-29 13:12:41

标签: c# memory-management

static void Main()
{
    int i;
    int j;
    j=10;
    i=2;
}

是否按照声明出现的顺序在堆栈中为变量分配内存,还是在初始化时分配内存?

我认为变量按照它们被声明的顺序加载到堆栈上,而其他人则反对。因此,根据他们的说法,j首先被推到堆栈上,而我认为我被推到了堆栈中。谁是对的?

1 个答案:

答案 0 :(得分:0)

简短的回答是你无法知道堆栈分配的确切顺序。

为了优化目的,编译器和处理器可以对操作进行重新排序。正如Ehsan在评论中已经指出的那样,当使用发布版本时,您的代码甚至可能根本不会被执行。

看看这篇文章The C# Memory Model,它可能有助于解释为什么确切的分配顺序不是事先你能知道的。