c#栈变化规则图解示例(栈的生长与消亡)
时间:2021-10-12 05:11:11
栈的变化规则:
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;
}
}
标签: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