请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

栈和堆讲解[转]

  [复制链接]
查看5428 | 回复5 | 2015-7-2 09:28:40 | 显示全部楼层 |阅读模式
【转】对于一些新人可能会不理解栈和堆是什么,在这里我简单介绍一下:

程序运行时,它的数据必须存储在内存中。一个数据项需要多大的内存、存储在什么地方、以及如何存储都依赖与该数据项的类型。
运行中的程序使用两个内存区域来存储数据:栈和堆。

首先,什么是“栈”?

栈是一个内存数组,是一个LIFO(last-in  first-out,后进先出)的数据结构。栈存储几种类型的数据:
某些类型变量的值
程序当前的执行环境
传递给方法的参数
栈的特征:
栈有如下几个普遍特征:
数据只能从栈的顶端插入和删除
把数据放到栈顶称为入栈(push)
从栈顶删除数据称为出栈(pop)

什么是“堆”?

堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据。与栈不同,堆里的内存可以任意顺序存入和移除。
虽然程序可以在堆里保存数据,但并不能显示地删除它们。CLR的自动GC(Garbage Collector,垃圾收集器)在判断出程序的
代码将不会再访问某数据项是,自动清除无助的堆对象。我们因此可以不再操心这项使用其他编程语言时非常容易出错的工作了。

堆栈空间分配:
栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。


总之:堆,队列优先,先进先出,栈,先进后出,而且栈的存取速度比堆快。

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
剑弑 | 2015-7-2 09:43:05 | 显示全部楼层
学习了
卖烤地瓜的 | 2015-7-2 11:15:41 | 显示全部楼层
沙发
ibcadmin | 2015-7-2 13:00:08 | 显示全部楼层
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
卖烤地瓜的 | 2015-7-3 10:02:23 | 显示全部楼层
地板
禅话 | 2015-8-24 15:45:16 | 显示全部楼层
学习
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则