我对栈(stack)
和堆(heap)
的内存分配基础概念感到困惑。按照标准定义(大家都说的那些东西),所有值类型(Value Types)
都将被分配到栈(Stack)
上,而引用类型(Reference Types)
将放到堆(Heap)
中。
现在考虑以下示例:
class MyClass
{
int myInt = 0;
string myString = "Something";
}
class Program
{
static void Main(string[] args)
{
MyClass m = new MyClass();
}
}
现在,在C#中内存分配会如何发生?我的类(即m)的对象是否将完全分配给堆?也就是说,int myInt和string myString都会进入堆吗?
或者,对象将被分成两部分,并将分配到堆和栈两个内存位置?