欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c#栈变化规则图解示例(栈的生长与消亡)

程序员文章站 2024-02-15 20:21:40
栈的变化规则:1、方法调用会导致栈的生长,具体包括两个步骤:一、插入方法返回地址(下图中的fn:);二、将实际参数按值(可以使用ref或out修饰)拷贝并插入到栈中(可以使...

栈的变化规则:

1、方法调用会导致栈的生长,具体包括两个步骤:一、插入方法返回地址(下图中的fn:);二、将实际参数按值(可以使用ref或out修饰)拷贝并插入到栈中(可以使用虚参数访问)。
2、遇到局部变量定义会向栈中插入局部变量。
3、遇到return语句会导致栈消亡,一直消亡到方法返回地址,并把return的返回值设置到方法返回地址中。
4、这里先不考虑中括号导致的栈的消亡。

c#栈变化规则图解示例(栈的生长与消亡)

复制代码 代码如下:

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;

namespace stackandheapstudy
{
    unsafe class program
    {
        static void main(string[] args)
        {
            var test = new testclass();
            setx(test);
            console.writeline(*test.x);
            console.writeline(*test.x);
        }

        private static void setx(testclass test)
        {
            var x = 10;

            test.x = &x;
        }
    }

    unsafe class testclass
    {
        public int* x;
    }
}