gpt4 book ai didi

c# - 在 C# 中销毁结构对象?

转载 作者:IT王子 更新时间:2023-10-29 04:32:12 25 4
gpt4 key购买 nike

我有点困惑,因为在 C# 中只有引用类型会被垃圾回收。这意味着 GC 只选择引用类型来释放内存。那么值类型会发生什么,因为它们也占用堆栈上的内存?

最佳答案

首先,它们是在堆栈中还是堆中的一部分取决于它们所属的上下文 - 如果它们在引用类型中,它们无论如何都会在堆中。 (无论如何,您应该考虑您真正关心堆栈/堆划分的程度 - 正如 Eric Lippert 所写,它是 largely an implementation detail。)

但是,基本上值类型内存在上下文被回收时被回收 - 因此当您从方法返回时弹出堆栈时,“回收”了整个堆栈框架。同样,如果值类型值实际上是对象的一部分,那么当该对象被垃圾回收时,内存将被回收。

简短的回答是您不必担心它 :)(这假设您除了内存之外没有任何东西需要担心,当然 - 如果您有获得了对需要释放的 native 句柄的引用的结构,这是一个稍微不同的场景。)

关于c# - 在 C# 中销毁结构对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146434/

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