gpt4 book ai didi

.net - .net框架中值类型和引用类型的内存分配

转载 作者:行者123 更新时间:2023-12-03 09:49:09 24 4
gpt4 key购买 nike

是否有一篇我可以阅读的高级文章可以解释如何在 .net 框架中为不同类型(值和引用)分配内存。

例如,我们知道值类型在堆栈上分配了空间,但是如何管理呢?

还有如何在堆中管理引用类型以及实际值存储在哪里。 (任何类的引用类型都会包含许多值类型,它们保存在哪里以及如何管理)

最佳答案

它比你想象的要复杂。即使您声称“在堆栈上分配了值类型”也是不正确的。例如:

class Foo
{
int x;
}
int是值类型,但 x 的值将始终在堆上,因为它将与作为类的 Foo 实例的其余数据一起存储。

此外,匿名函数和迭代器块的捕获变量使生活变得更加棘手。

我有一个 article about C# heap/stack memory您可能会觉得有用,但您可能还想阅读 Eric Lippert 在 "The stack is an implementation detail" 上的博客文章。 .特别是, future 的 C# 编译器可以决定将其所有局部变量存储在堆上,使用堆栈来保存对在方法开始时创建的实例的引用......这不会违反 C# 规范全部。

关于.net - .net框架中值类型和引用类型的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1130468/

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