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

时间:2021-10-12 05:11:11 

栈的变化规则:

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

标签:c#,栈变化规则
0
投稿

猜你喜欢

  • Mybatis一对多关联关系映射实现过程解析

    2021-07-13 06:22:59
  • 详解基于spring多数据源动态调用及其事务处理

    2023-06-23 14:37:25
  • 使用C#调用系统API实现内存注入的代码

    2021-12-01 00:25:59
  • Java 深入探讨设计模式之原型模式篇

    2023-11-16 17:37:59
  • Java实现字符串解析为日期时间的方法示例

    2021-10-29 17:43:34
  • java转树形结构工具类详解

    2021-07-26 04:00:08
  • Java emoji持久化mysql过程详解

    2023-10-10 23:11:49
  • 解析C#设计模式编程中备忘录模式的运用

    2023-06-10 11:40:00
  • java private关键字用法实例

    2022-01-16 10:08:06
  • java中Memcached的使用实例(包括与Spring整合)

    2021-11-28 13:29:06
  • Java正确使用访问修饰符的姿势

    2021-10-11 09:52:50
  • 使用java代码获取新浪微博应用的access token代码实例

    2023-12-01 20:18:30
  • 史上最全的java随机数生成算法分享

    2023-10-17 15:22:33
  • Spring Boot将项目打包成war包的操作方法

    2022-01-02 22:30:50
  • c# HttpClient设置超时的步骤

    2023-05-07 10:42:29
  • Android SlidingDrawer 抽屉效果的实现

    2023-08-02 07:58:30
  • java二维数组基础知识详解

    2023-03-28 11:10:54
  • 执行java请求时导致在脚本执行结束时JVM无法退出

    2023-11-25 05:57:13
  • 归并排序的原理及java代码实现

    2021-11-18 13:51:10
  • Spring Boot中使用JDBC Templet的方法教程

    2021-09-06 06:04:38
  • asp之家 软件编程 m.aspxhome.com