【问题标题】:Structs, heaps, and stacks - memory management结构、堆和栈——内存管理
【发布时间】:2015-07-29 16:09:54
【问题描述】:

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

所以我的问题是 - 如果我将这些结构声明为这样的局部变量 - 它们会全部放入堆栈吗?

struct A<T> where T : struct { }

struct B<T> where T : class { }

struct C { }

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

感谢 C# 大师!

【问题讨论】:

标签: c# memory struct heap-memory stack-memory


【解决方案1】:

结构去你告诉他们去的地方。

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

如果一个结构包含一个类,那么该引用将内联在结构中,就像它是一个 int 或任何其他成员一样。类引用指向的东西在堆上

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-10
    • 2017-04-28
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 2012-05-24
    • 2018-02-17
    • 2015-09-28
    相关资源
    最近更新 更多