结构体、堆和栈——内存管理

本文关键字:内存 管理 结构体 | 更新日期: 2023-09-27 18:05:36

我一直在读一本关于c#的书,并且遇到了在内存中存储值的主题。引用类型的实例总是在堆上创建,但是变量的值存在于声明它的任何地方。只有局部变量(在方法中声明的变量[不是匿名的])和方法参数存在于堆栈中。

所以我的问题是-如果我声明这些结构体作为这样的局部变量-他们都放在堆栈上吗?

struct A<T> where T : struct { }
struct B<T> where T : class { }
struct C { }

我只是想知道struct的内容是否会影响它在内存中的存储位置。

谢谢,c#大师!

结构体、堆和栈——内存管理

结构体去你让它们去的地方

如果它们在函数中声明为局部变量,则它们位于堆栈中。如果它们是类成员,则它们内联在类的堆内存中。

如果一个结构体包含一个类,那么这个引用就被内联在这个结构体中,就像它是一个int或任何其他成员一样。类引用点在堆上