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

 更新时间:2013年11月25日 10:34:16   作者:  
多数情况下我们不需要关心栈的变化,下文会给出一个具体的示例。另外,理解栈的变化对于理解作用域也有一定的好处,因为C#的局部变量作用域是基于栈的。

栈的变化规则:

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



复制代码 代码如下:

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;
    }
}

相关文章

  • Unity3D基于陀螺仪实现VR相机功能

    Unity3D基于陀螺仪实现VR相机功能

    这篇文章主要为大家详细介绍了Unity3D基于陀螺仪实现VR相机功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C# WCF简单入门图文教程(VS2010版)

    C# WCF简单入门图文教程(VS2010版)

    这篇文章主要介绍了WCF简单入门图文教程,版本是VS2010版,帮助大家轻松学习了解DataContract、ServiceContract等特性,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • C#事件管理器如何清空所有监听详解

    C#事件管理器如何清空所有监听详解

    这篇文章主要给大家介绍了关于C#事件管理器如何清空所有监听的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • C#实现对二维数组排序的方法

    C#实现对二维数组排序的方法

    这篇文章主要介绍了C#实现对二维数组排序的方法,实例分析了C#数组遍历与排序的相关技巧,需要的朋友可以参考下
    2015-06-06
  • C#给picturebox控件加图片选中状态的2个方法

    C#给picturebox控件加图片选中状态的2个方法

    C#给picturebox控件加图片选中状态的2个方法,需要的朋友可以参考一下
    2013-03-03
  • C#通过重写Panel改变边框颜色与宽度的方法

    C#通过重写Panel改变边框颜色与宽度的方法

    这篇文章主要介绍了C#通过重写Panel改变边框颜色与宽度的方法,涉及C#针对Panel控件的重写与属性设置技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C#实现微信分账功能的完整步骤

    C#实现微信分账功能的完整步骤

    这篇文章主要给大家介绍了关于C#实现微信分账功能的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05
  • C# 实现颜色的梯度渐变案例

    C# 实现颜色的梯度渐变案例

    这篇文章主要介绍了C# 实现颜色的梯度渐变案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • C#实现坦克大战游戏

    C#实现坦克大战游戏

    这篇文章主要为大家详细介绍了C#实现坦克大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • C#编程实现连接ACCESS数据库实例详解

    C#编程实现连接ACCESS数据库实例详解

    这篇文章主要介绍了C#编程实现连接ACCESS数据库的方法,以实例形式较为详细的分析了C#连接access数据库的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11

最新评论