越详细越好,最好举个例子
解决方案 »
- 正则判断是否为优酷网址
- 奇怪的下拉列表框,谁遇到过呀,真是郁闷!
- 阅读器关闭时尝试调用 Read 无效。关于考勤的,代码贴出来给大侠们看,小弟新手。
- 新增记录后,获取新增id出错
- 初次使用WebPartManange出现数据库连接出错的问题
- <%# 请大家介绍使用VS+ASP.NET制作网页的技巧和心得 比如在页面制作 还有各方面良好的习惯 谢谢 %>
- dotnet 中\的转义字符怎么写啊。是\\吗,为什么啊
- 请教Dropdownlist的一个问题,解决立即结贴,在线等!
- 还是有关datagrid,对其中多行数据进行保存的问题
- 请问各位高手:如何使asp:table控件自动添加行?多谢了
- [问题啊!]关于Page.Controls.Add
- 小弟我琢磨了几天了!!关于使用owc,如果解决立刻给分!!在线等!!
老兄,是否有误,记得数据结构中 栈是先进后出!队列是先进先出
队列是否对应.NET中的堆?
堆存引用类型(如class)
1、从CPU层次讲
堆和栈已经常用到CPU的指令中直接得到了支持。
(堆和栈的数据结构特性我就不说了,任何一本讲数据结构的书上都讲的很详细)
CPU对栈的支持就是堆栈指令push、pop等,堆实际就是一块还没有被进行任何组织的内存。可以说整个内存就是一个大堆。从堆中取出一块,让它按照栈的存取方式来存取,这就是成了栈。
2、从操作系统层次讲
操作系统增加了对虚拟内存的管理。我们所操作已不在上真正的内存。拿win32来说,就是一个最大4G的虚拟空间,我们可以在这个虚拟空间中进行堆与栈的操作,当然我们的操作都是虚拟的,实际的操作还要操作帮助完成。
操作系统对内存进行了有效管理,独立管理。进程与进程之间是分开的,每个进程都有它的堆,如每个进程都有默认堆。其实我们甚至可以把进程内没有被分配的内存都看成堆,你都可以自由索取内存。我们知道线程都有它的栈(这里有个容易犯的错误,有的人看见说函数的参数要进栈出栈就说函数有栈,错,函数用的栈是它所属的线程的。)我们可以这样理解,栈就是从堆这样一块虚拟大内存中分出一块,按照栈的规则操作的一块内存,以后我们就可以对这块内存进行push和pop等操作了。
3、从程序员编程层次讲
我们程序员只要知道,对于内存这样一个重要的东西,系统给我们提供了两种重要且常用的数据结构。汇编语言中,对栈的操作就是push和pop,以前说的push和pop都是数据结构中概念上的,这里才是对栈真正的push和pop。对于堆的操作,其实就是直接操作地址。对于高级语言,比如c,对于栈的操作道是给隐藏了,只要我们int a;就可以把变量a压入栈中,对于堆的操作变成了成对的new和delete,我们要用的话需要先申请,不向汇编语言直接用.申请是因为让操作系统知道,操作系统要对内存进行管理.