• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

c#新手对栈与堆的理解

时间:2015年04月02日 15:40:42    来源:魔法猪系统重装大师官网    人气:9031
最近在公司实习,主要业务是工业软件,用.net开发,说实话我之前一直用java的。c#都没怎么接触过,所以打算每天写点随笔,鉴证我的学习过程。

下面是我对栈与堆的理解(纯个人观点):

1.首先对于值类型是直接把变量的值保存在栈中的,而引用类型则把数据的地址保存在栈中,而实际数据则保存在堆中。

2.栈:在内存中存储的是固定长度的数据(如:int是4个字节)。堆:存储的是可变长度的数据(如string)。

3.在c#中还提到了托管堆,这其实是.net不同于其他语言的地方,它存储的是引用类型如类,对象并受垃圾收集器的控制和管理。

例:

1. class1 object1;

2. object1=new class1();

第一句定义了class1的引用,实质上就是在栈中分配了一个4个字节的空间,用来存储实例化后对象在托管堆中的地址。

第二句实例化object1对象,实质上就是在托管堆中开辟了内存空间来存储类class1的一个具体对象。由此可知,c#不让使用未实例化的对象是因为这

个对象在托管堆中还不存在。当对象不再使用,这个存在栈中的引用变量会被删除,但是托管堆中这个引用指向的对象还是存在的,其空间何时被释放

取决于垃圾收集器而不是引用变量失去作用域。管理的

4.c#除了引用类型的变量,还存在值类型和其他托管堆不能管理的对象,如文件名柄,网络连接和数据库连接,这些变量的释放就需要通过析构函数或

IDisponse借口来做。
新手,对,栈,与,堆,的,理解,最,近在,公司,实习,
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部