在介绍运行时的关系之前,先从一些计算机基础只是入手,如下图:

该图展示了已加载CLR的一个windows进程,该进程可能有多个线程,线程创建时会分配到1MB的栈空间.栈空间用于向方法传递实参,方法定义的局部变量也在实参上,上图的右侧展示了线程的栈内存,栈从高位内存地址向地位内存地址构建.图中线程已经执行了一些代码,栈中已经存在了一些数据(图中阴影部分),现在假定线程执行的代码要调用M1方法.

简单的方法执行前运行时会先执行"序幕"代码,在方法开始前对其进行初始化,然后会执行"尾声"代码,在方法做完工作后对其进行清理,以便返回至其调用者.M1方法开始执行时,它的"序幕"代码在线程栈上分配局部变量的name的内存.如下图所示:

然后M1方法调用M2方法,将局部变量name作为实参传递。这造成name局部变量的地址被压入栈

最新文章

  1. Shiro权限控制框架
  2. Storm实时计算框架的编程模式
  3. jQuery 有条件排序
  4. 第五十六节,python实现支持并发、断点续传的Ftp程序
  5. Input file 文本框美化
  6. 在Windows的DOS中运行java编程中的问题
  7. memcached 详解
  8. 【Python 08】汇率兑换2.0-1(字符串索引)
  9. 回声TCP服务器端/客户端
  10. ReactiveX 学习笔记(18)使用 RxJS + Angular 调用 REST API
  11. HttpInvokerUtils
  12. ubuntu 14.04 安装 openvswitch
  13. 洛谷P2597 [ZJOI2012] 灾难 [拓扑排序,LCA]
  14. CAS连接微软活动目录的配置方法
  15. __all__的作用
  16. 实践作业3:白盒测试----总结与反思DAY12.
  17. 实验三 敏捷开发与XP实践实验报告
  18. cpu gpu数据同步
  19. 阿里云RDS(云数据库)之产品简介
  20. 异构数据库迁移——DATAX

热门文章

  1. hibernate第一天
  2. kvm虚拟机管理 系统自动化安装
  3. QTP日期格式化
  4. QT之TCP通信
  5. Servlet与Jsp的结合使用实现信息管理系统二
  6. ACM HDU 1559 最大子矩阵
  7. oracle中 merge into 的用法
  8. sublime text 3.0新版本注册码
  9. 微信小程序语音与讯飞语音识别接口(Java)
  10. Session与Cookie的概念原理