C#销毁变量以释放内存

时间:2017-02-09 20:48:52

标签: c# variable-initialization

鉴于我多次循环执行函数Foo:

int Foo(int a)
{
int b = 5;
return a * b;
}

我相信变量“b”被多次初始化(与初始化函数Foo一样多次)。假设我不想在函数Foo之外移动“b”,我是否必须释放后续“b”初始化所声称的内存,还是自动完成?

1 个答案:

答案 0 :(得分:3)

这些是整数,可以存储在堆栈中,但在这种情况下不太可能。堆栈内存不需要像变量超出范围一样进行管理,它会从堆栈中弹出并释放内存。当您使用托管对象(正确)时,您也很少担心手动管理.net中的内存。

有关这些值是否实际存储在堆栈中的更多信息,请参阅this answer by Marc Gravell。另外,正如答案所指出的那样,Eric Lippert a well written article就此而言(从2009年开始,但没有太大变化)。

来自Marc Gravell的回答

  

它们有时是,但不是:

     
      
  • 类上的字段
  •   
  • 捕获的变量
  •   
  • 迭代器块中的变量
  •