当前位置: 首页 > news >正文

企业网站的综合要求百度官网

企业网站的综合要求,百度官网,佛山新网站制作市场,禅城区网站建设深入浅出图解C#堆与栈 C# Heaping VS Stacking 第三节 栈与堆,值类型与引用类型 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工…

深入浅出图解C#堆与栈 C# Heaping VS Stacking 第三节 栈与堆,值类型与引用类型

  • [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)
  • [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理](https://mp.csdn.net/mdeditor/101022949#)
  • [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第三节 栈与堆,值类型与引用类型](https://mp.csdn.net/mdeditor/101023885#)
  • [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 1](https://mp.csdn.net/mdeditor/101026168#)
  • [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 2](https://mp.csdn.net/mdeditor/101027584#)
  • [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复](https://mp.csdn.net/mdeditor/101028008#)
  • [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第六节 理解垃圾回收GC,提搞程序性能](https://mp.csdn.net/mdeditor/101029557#)
  • 栈与堆,值类型与引用类型
    • 前言
    • 简介
    • 值类型会存储在堆里?
    • 堆栈原理对代码的影响
      • 使用值类型
      • 使用引用类型
        • 第一个示例中
        • 第二个示例
    • 总结

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第三节 栈与堆,值类型与引用类型

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 1

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 2

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第六节 理解垃圾回收GC,提搞程序性能

栈与堆,值类型与引用类型

前言

虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC)。另外,了解内存管理可以帮助我们理解在每一个程序中定义的每一个变量是怎样工作的。


简介

本文将介绍值类型与引用类型在堆栈里的基本存储原理。


值类型会存储在堆里?

是的,值类型有时候就是会存储在堆里。上一节中介绍的黄金规则2:值类型和指针永远存储在它们声明时所在的堆或栈里。如果一个值类型不是在方法中定义的,而是在一个引用类型里,那么此值类型将会被放在这个引用类型里并存储在堆上。

代码图例

我们定义一个引用类型:
在这里插入图片描述
里面包含一个值类型MyValue。
执行下面的方法:
在这里插入图片描述

就像上一节介绍的一样,线程开始执行此方法,参数pValue将会被放到当前线程栈上。
在这里插入图片描述
接下来不同于上一节所介绍的是MyInt是一个引用类型,它将被放到堆上并在栈上放一个指针指向它在堆里的存储。
在这里插入图片描述

当AddFive()执行完成后,如上一节所讲栈开始清理。
在这里插入图片描述

现在是需要C#垃圾回收GC的时候了。当我们的程序所占内存到达临界值时(即将溢出),我们会需要更多的堆空间,GC就会开始运行。GC停止所有当前运行线程(整体停止),找到堆里所有主程序不会访问到的对象并删除它们。然后,GC会识别所有堆里剩下的对象并分配内存空间给它们,同时调整堆和栈里指向它们的指针。你可以想像这是非常耗资源的,这会影响到程序的性能。这就是为什么我们需要理解和注意堆栈的使用,进而写出高性能代码。


堆栈原理对代码的影响

当我们使用引用类型时,我们在和指向引用类型的指针打交道,而不是引用类型本身。
当我们使用值类型时,我们就是在和值类型本身打交道。

代码图例

使用值类型

假设执行方法:
在这里插入图片描述
我们会得到值 3。


使用引用类型

在这里插入图片描述

如果执行方法:
在这里插入图片描述
我们得到的值是4而不是3!(译外话:这是很简单,但相信还是有很多人不知道原理的)


第一个示例中

在这里插入图片描述
在这里插入图片描述
x就是3,y就是4。操作两个不同对象。

第二个示例

在这里插入图片描述
在这里插入图片描述
得到的值是4不是3是因为我们操作栈里两个指针并且它们指向堆里同一个对象。

总结

希望这篇文章能帮助你更好的理解值类型变量与引用类型变量的不同,同时理解什么是指针,什么时候用到指针。以后的文章里会更深入的介绍C#内存管理并详细阐述方法参数。

译文连接:https://blog.csdn.net/leewhoee/article/details/16957545
原文链接:https://www.c-sharpcorner.com/article/C-Sharp-heaping-vs-stacking-in-net-part-i/

http://www.mnyf.cn/news/32352.html

相关文章:

  • 面签拍照 网站备案怎么学做电商然后自己创业
  • wordpress展示模板seo网站搭建是什么
  • layui+wordpress宁波网络推广优化公司
  • 做ftp网站怎么设置病毒式营销案例
  • 遵义网站建设今日军事新闻头条新闻
  • 网站怎样设计网址大全资深seo顾问
  • 引航博景网站做的很好吗百度搜索引擎的网址
  • flash型的著名网站西安分类信息seo公司
  • 银行网站建设方案广告设计网站
  • 上海做网站的公司哪个好海外营销推广服务
  • wordpress浮动音乐seo关键词推广话术
  • 长治网站建设电话合肥seo报价
  • 如何识别网页用什么网站做的seo服务的内容
  • 免费找精准客户的app班级优化大师下载安装app
  • 哪些网站的做的好看的深圳网络推广服务公司
  • wordpress搜索参数小红书seo排名优化
  • 硅云买域名做网站本周热点新闻事件
  • 东莞营销型高端网站建设如何让别人在百度上搜到自己公司
  • 国外论文类网站有哪些方面营销型网站建设企业
  • 最好的完全免费开源企业网站百度手机助手官网
  • 做网站买空间江门网站建设模板
  • 服务器网站带宽seo排名培训
  • 成都 网站建设新闻头条今日新闻下载
  • 如何查询网站打开速度百度投放广告怎么收费
  • aspx网站实例软件开发公司网站
  • 第三方做公司网站网站seo在线优化
  • 国内可以做的国外兼职网站服务器租用
  • 网站 流程怎么样做一个自己的网站
  • 谁能给个网站谢谢发稿媒体平台
  • 广东专业移动网站建设哪家好2024新闻热点摘抄