类型,对象,线程栈和托管堆在运行时的相互关系(一)。

   当系统加载一个CLR的进程,进程里面可能有多个线程,这时候系统会给这个进程创建一个大小为1M的线程栈。这个线程栈用来存放方法调用的实参,和方法内部定义的局部变量。下图展示了一个线程栈的栈内存。线程栈的存储是从高位内存地址向地位内存地址构建的。现在假设线程栈执行的代码要调用M1方法。

在这个很简单的方法中,应该包含一些初始化这个方法的“序幕”代码,和一些“尾声”代码,负责在方法调用完成之后对方法进行清理。然后才返回给这个方法的调用者。M1方法调用开始时,M1的序幕代码在线程栈上分配局部变量name的内存。如下图

然后M1调用M2方法,将name作为一个实参来传递。这造成name局部变量中的地址被压入栈。如下图:在M2方法内部,将使用名为s的参数变量来表示栈位置。另外调用一个方法时还要将一个返回地址压入栈。被调用的方法结束后,应该返回到这个位置。如下图:M1调用M2的时候将实参和返回地址压入栈。

 

M2方法开始执行时,同样它的“序幕”代码在线程栈中为局部变量length和tally分配内存。如下图,然后M2中的内部代码开始执行。最终方法内部的代码开始执行,最终到达return语句,此时CPU的指令指针被设置成线程栈中的返回地址。而且M2的栈帧会被展开。(我理解栈帧被展开的意思就是在线程栈中就M2方法的痕迹给消除,应该是被尾声代码所为),这点不是很理解,肯定不能是在清楚M2方法法的痕迹之后在返回,那样返回地址已经不存在了,那就是程序在返回给调用者之后猜进行清理的?请教牛人。,之后M1会执行M2方法调用后面的代码。最后M1会同M2一样返回给调用者。

 

参考clr via C#

说的不对的地方,口下留情,疑惑地方请指点。

 

  

转载于:https://www.cnblogs.com/fantiantian/archive/2012/05/22/2513435.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云发布三大人工智能产品:推动AI产业落地

来源:科技圈里那点事儿摘要: 近日,阿里云正式发布了三款人工智能产品:图像搜索、智能语音自学习平台以及机器翻译,进一步推动产业AI的落地。近日,阿里云正式发布了三款人工智能产品:图像搜索、智…

C/C++求一个整数的二进制中1的个数(用三种效率不同的方法实现)

题目: 实现一个函数,输入一个整数,输出该数二进制中1的个数。例如把9表示成二进制是1001,有2位是1,因此如果输入是9,该函数输出2 第一种解法(死循环) 判断整数二进制表示中最右边…

2018智能音频报告:智能音箱带来的智能音频和广播媒体的机遇

来源:199IT互联网数据中心摘要:前中国智能音箱正热,阿里巴巴、京东、百度纷纷发布自己的智能音箱产品,大打价格战,希望以绝对底价抢占市场。前中国智能音箱正热,阿里巴巴、京东、百度纷纷发布自己的智能音箱…

c++中求前n项和(这代码不得不让我佩服)

今天在牛客网上刷题,遇到了这道题,最后我看到一位大佬的代码让我感觉的还差很多!!! 题目 求123…n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C&am…

基于Arduino和HC-SR04的超声波测距系统设计

本文介绍了如何使用Arduino和HC-SR04超声波传感器设计并构建一个简单的超声波测距系统。我们将详细讨论硬件连线和编程步骤,并提供完整的Arduino代码。此系统可以应用于各种需要测量距离的项目,例如智能车辆、机器人和安防系统。 引言: 超声…

中国AI企业吸金旺但90%亏损 今年将迎倒闭潮

来源:网易智能摘要: 据报道,自2017年人工智能成为国家战略目标后,相关产业迎来飞速发展机遇,更成为全球吸金能力最强的产业之一。2017全年,大陆AI企业的融资总额已占到全球的7成,但其背后的隐忧…

不用加减乘除算加法

题目 写一个函数,求两个整数之和,要求在函数体内不得使用、-、*、/四则运算符号。 思路 (一)首先看我们平时的十进制是如何做的: 65 ,三步曲!!! 相加各位的值&#xf…

《Nature》纪念人工智能60周年专题:深度学习综述

来源:网络大数据摘要:本文是《Nature》杂志为纪念人工智能60周年而专门推出的深度学习综述,也是Hinton、LeCun和Bengio三位大神首次合写同一篇文章。本文是《Nature》杂志为纪念人工智能60周年而专门推出的深度学习综述,也是Hinto…

对抗性攻击轻松愚弄人工智能

对抗性攻击欺骗图像识别算法将3D打印乌龟认作步枪。来源:中国科学报摘要:在日前于瑞典斯德哥尔摩举行的国际机器学习会议上,一群研究人员描述了他们的3D打印乌龟。在日前于瑞典斯德哥尔摩举行的国际机器学习会议上,一群研究人员描…

浅谈C语言指针

什么是指针? 在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中的另一个地方的值。由于通过地址能找到所需的变量单位,可以说,地址指向…

转:EXCEL数据有效性设置

原文: http://hi.baidu.com/guosq/blog/item/88b37cd5bd367cfda144dfa0.html 先看图,有学生成绩表格,录入要求: 1. 成绩范围: 0 - 100; 2. 课程:只能是语文、数学、英语。 操作步骤:…

科学家绘制果蝇完整大脑高清图—可借此追踪任何两个神经元之间的连接

研究人员利用电子显微镜重建了果蝇的一系列神经元。来源:中国科学报科学家近日首次对黑腹果蝇的整个大脑进行了足够详细的成像,从而能探测每个神经元之间的单独连接,或者说突触。由此获得的图像数据库可帮助研究人员描绘支撑果蝇嗅闻、嗡嗡叫…

谈谈 Android 有多成功!欧盟这么罚它

选自 | Stratechery 作者 | Ben Thompson 编译 | 网易智能 参与 | 乐邦西方知名科技博主本汤普森(Ben Thompson)近日发布题为“欧盟VS Android”的文章,称谷歌固然有其违法的地方,但欧盟剥夺谷歌从其冒着高风险斥资数十亿美元开发…

《纽约时报》评中国技术热潮:追捧“上菜机器人”等无意义的新奇产品

来源:纽约时报编译:全球技术地图上海的机器人魔力餐厅里的非人类服务员只能做到这一步。在食客们拍完照片和视频后,常规的服务员会上前进行服务。上海——能读人想法的耳机什么都没读出来。检测火灾的机器人已被宣布为安全隐患。机器人服务员…

运算符的优先级(Operator Precedence)总结(表)

概念 在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合&#xff…

10家最具创新性的机器学习公司

来源:资本实验室摘要:机器学习是实现人工智能的一种方法,通过使用算法来解析数据、从中学习,然后对现实世界中的事件做出预测和判断。机器学习已经在各个行业得到广泛应用。近日《Analytics Insight》杂志评选出10家最具创新性的机…

李飞飞公布谷歌云TPU、AutoML、行业方案等多项进展,AI云计算成谷歌全新增长点...

来源:全球人工智能摘要:7 月 24 日-26 日,Google Cloud NEXT 18 大会在美国旧金山举行。7 月 24 日-26 日,Google Cloud NEXT 18 大会在美国旧金山举行,Google Cloud作为谷歌人工智能未来业务发展的基础性平台&#xf…

Gartner:2018年十大科技趋势与其对IT和执行的影响

来源:云技术实践摘要:Gartner每年发布的十大战略科技趋势一直备受关注,但企业往往会将50%以上的预算花在基础设施和执行上。因此,了解十大科技趋势与其对IT和执行的影响十分必要。在本周的Gartner CIO峰会期间,Gartner…

C++读取INI文件

Windows操作系统专门为此提供了6个API函数来对配置设置文件进行读、写:GetPrivateProfileInt() 从私有初始化文件获取整型数值GetPrivateProfileString() 从私有初始化文件获取字符串型值GetProfileInt 从win.ini 获取整数值GetProfileString 从win.ini 获取字符串值…

专栏 | 李航教授展望自然语言对话领域:现状与未来

来源:机器之心摘要:原华为诺亚方舟实验室主任、现已加入字节跳动 AI Lab的李航教授近日发表博客,对自然语言对话领域的现状和最新进展进行总结,并展望了未来的走向。1. 引言语音助手、智能客服、智能音箱、聊天机器人,…