gpt4 book ai didi

c# - 什么时候释放临时对象的内存

转载 作者:行者123 更新时间:2023-11-30 19:57:09 26 4
gpt4 key购买 nike

如果我有如下代码

Public int SomeFunct()
{
int temp;
Int32.Parse(txtbox.Text, out temp);
return temp;
}

我正在使用临时 int。那么函数执行结束后,int(或使用的任何临时对象)的内存什么时候释放呢?或者,是否有任何代码可以显式调用?

最佳答案

在这种情况下,temp 变量很可能分配在堆栈上或寄存器中。

我说“最有可能”是因为据我所知,这个级别的代码的确切工作是特定于实现的。

在方法返回时,它将在堆栈上被释放。如果它被放在一个寄存器中,那么该寄存器将在某个时候被重用,并且在方法返回时将不再具有任何特定意义。

在这种情况下,我认为总结一下,方法返回时它将被“释放”。

另请注意,虽然 .NET 中的所有类型都继承自 System.Object,但引用类型通常使用短语“对象”。 int是一个值类型,不分配在堆上。

如果您还指“临时对象会发生什么”,那么垃圾收集器将在以后某个不确定的时间点收集这些对象。

比如这段代码:

public void Log(int value)
{
Debug.WriteLine(value);
}

这里我们使用 this overload of Debug.WriteLine that takes an object parameter .在这种情况下,int 值将为 boxed这意味着将在堆上分配一个对象来保存我们的 int

此临时对象将由 Debug.WriteLine 使用,然后不再被视为“正在使用”。在未来某个不确定的时间点,垃圾收集器将收集它。

关于c# - 什么时候释放临时对象的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31382468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com