随笔 - 30, 文章 - 0, 评论 - 64, 引用 - 0
数据加载中……

栈(Stack) 堆(Heap)


C++即允许程序员有两种向操作系统申请内存的方式。
    前一种就是在栈上分配,申请的内存大小固定不变
    后一种是在堆上分配,申请的内存大小可以在运行的时候变化,不是固定不变的
_______+++++++++++++++++++++++++++++++++++_____________________________




栈(Stack)
                   
                  : 任何程序执行前,预先分配一固定长度的内存空间,
                    这块内存空间被称作栈,也被叫做堆栈
                    即程序员自己判断可以使用哪些内存,
                    而不是操作系统,很明显,
                   上面的工作是由编译器来做的,   
                   工作只是从操作系统变到程序自己而已,
                   好处就是由于程序一开始执行时就已经分配了一大块连续内存,
                   坏处也就是只能在编译时期分配内存


上面的工作是编译器做的,即程序员并不参与堆栈的维护。但上面已经说了,堆栈相当于在编译时期分配内存,因此一旦计算好某块内存的偏移,则这块内存就只能那么大,不能变化了


__________________________________________________________________________________________________

堆(Heap)

                
在Windows操作系统下,由操作系统分配的内存就叫做堆
                 而栈可以认为是在程序开始时就分配的堆
                 因此在堆上就可以分配大小变化的内存块,
                 因为是运行时期即时分配的内存,
                而不是编译时期已计算好大小的内存块。

posted on 2008-11-24 18:45 henry08 阅读(1008) 评论(1)  编辑 收藏 引用 所属分类: C++

评论

# re: 栈(Stack) 堆(Heap)  回复  更多评论   

应该强调这里说的是操作系统的堆栈概念
而非数据结构中的堆栈概念
2008-11-26 10:46 | ShiningRay

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理