我试图弄清楚Stack和Heap的工作方式。
所以我对Stack的问题。例如,我们有下一个代码:
static void Main()
{
int a = 1;
int b = 2;
Console.WriteLine(a);
}
这两个变量都将被压入堆栈,变量“ b”将位于变量“ a”的顶部。
如果堆栈仅具有“推”和“弹出”操作,那么如何读取变量“ a”而不从堆栈“ b”弹出呢?
局部变量是在堆栈的动态/灵活部分之前定义的,因此实际拥有的是(假设没有优化):
可以随时访问局部变量值。它们只是相对于堆栈框架的相对偏移量。通常只能严格地访问用于瞬态值的堆栈的动态部分,但这不是包含我们为a和b命名的位置的内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句