Fork me on GitHub

栈帧

1, 什么是栈帧?

在调用方法的时候,内存从栈的顶部开始分配,保存和方法关联的一些数据项。这块内存叫方法的栈帧

2,栈帧包含的内存保存如下内容

①返回地址,也就是在方法退出的时候继续执行的位置

②这些参数分配的内存,就是这方法的值参数,或者还可能是参数数组(如果有的话)

③各种和方法调用相关的其他管理数据项

3,在方法调用时,整个栈帧都会压入栈

4,在方法退出时,整个栈帧都会从栈上弹出(栈展开)

    class Program
    {
        static void MethedA(int p1, int p2)
        {
            MethedB(p1, p2);
        }
        static void MethedB(int p1, int p2)
        {

        }

        static void Main(string[] args)
        {
            MethedA(1, 2);
        }
    }

5,以下演示在调用方法时栈帧压入栈的过程和方法结束后栈展开的过程(一共创建了3个栈帧)

 

posted on 2017-04-06 12:38  *Hunter  阅读(351)  评论(0编辑  收藏  举报

导航

AmazingCounters.com