Learn asp.net(C#) Base 0.1接触堆栈

本人对于堆栈的了解也不是很深,这里也只是介绍一下,通过学习C#的过程中了解到的堆栈知识。

这里就以一份读书笔记的形式来记录。

堆栈概念的由来也是和内存分不开的:

下文中概念内容引自——《C#图解教程》

运行中的程序使用两个内存区域来存储数据库——栈和堆

:一个内存数组。是一个LIFO(last-in first-out,后进先出)的数据结构。存储几种类型的数据:

      某些类系那个变量的值

      程序当前的执行环境

      传递给方法的参数

栈的特征:

      数据只能从栈的顶端插入和删除

      把数据放到栈顶成为入栈(push)

      从栈顶删除数据成为出栈(pop)

说完了栈的基本特性和概念,下面再说一下

:一块内存区域。堆中可以分配大块的内存用于存储某类型的数据。

与栈的区别:堆里的内存可以任意顺序存入和移除。虽然如此,但并不能显示的删除它们。【CLR的自动GC--垃圾收集器,在判断出程序的代码将不会再访问某数据项时,自动清除屋主的堆对象。】

***********************************************************************************

顺便说一下,值类型与引用类型。虽然是概念性的东西,个人感觉对于日后的开发工作还是很有理论上的帮助。

类型决定了对象在内存中的存储位置——栈和堆。

类型被分为两种:值类型和引用类型,两者的存储方式在内存中是不同的。

        值类型只需要一段单独的内存,用于存储实际的数据。

        引用类型需要两段内存:

              第一段,存储实际的数据,它总是位于堆中。

              第二段是一个引用,指向数据在堆中的存放位置

非成员数据的存储——值类型中数据存放在栈里;引用类型中实际数据存放在堆里而引用存放在栈里。

 

 

说了这么多,想必大家也可以清楚的了解了。堆和栈到底是个什么了。

欢迎大家共同探讨。

posted @ 2010-05-13 01:06  pyCoders  阅读(224)  评论(0编辑  收藏  举报