是否有一篇我可以阅读的高级文章可以解释如何在.net框架中为不同类型(值和引用)分配内存.
例如,我们知道值类型是在堆栈上分配空间,但是如何管理?
如何在堆中管理引用类型以及存储实际值的位置.(像任何类一样的引用类型将包含许多值类型,它们保存在哪里以及如何管理它们)
我正在阅读有关Dispose模式的内容,并了解内存的分配方式.以下是http://codebetter.com/karlseguin/2008/04/28/foundations-of-programming-pt-7-back-to-basics-memory/的引用.
内存分配
....
....
唯一的例外是属于引用类型的值类型-例如User类的Id属性与User类实例本身一起去堆上.
这里也提到了有关Stack Overflow的问题. .net中引用类型内的值类型的内存分配
我的理解是,所有值类型无论它们在何处声明都会进入堆栈.现在这看起来错了.在下面的代码中,i将继续堆; 根据链接不在堆栈上.这是因为MyClass引用类型将转移到堆及其所有值类型.
class MyClass()
{
int i = 5;
}
Run Code Online (Sandbox Code Playgroud)
好的,所以只有那些不属于类的值类型才能堆栈内存.对?但是,几乎所有像C#这样的Dot Net语言都在课堂上.那究竟什么去堆栈内存?
这个答案解释了什么值类型去堆.
如果是这种情况,堆栈内存上几乎没有甚至几乎没有任何东西.
我怀疑我误会了什么.
如果几乎所有数据都进入堆内存,我不理解堆栈内存的重要性/作用.
请解释.
以下两篇文章以简单的方式解释了很多内存管理.