C#销毁变量释放内存

C# destroying variables to free up memory

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

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

我相信变量 "b" 被初始化了很多次(与我初始化函数 Foo 的次数一样多)。假设我不想将 "b" 移到函数 Foo 之外,我是否必须释放后续 "b" 初始化所占用的内存,还是自动完成?

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

有关这些值是否实际存储在堆栈中或未存储的更多信息,请参阅 this answer by Marc Gravell. Also, as pointed in that answer, Eric Lippert a well written article(从 2009 年开始,但变化不大)。

来自 Marc Gravell 的回答

They sometimes are, but not as:

  • fields on a class
  • captured variables
  • variables in an iterator block