黑马程序员技术交流社区

标题: 堆栈具体指是什么东西? [打印本页]

作者: 李帅    时间: 2012-8-3 09:38
标题: 堆栈具体指是什么东西?
堆栈具体指是什么东西?   堆和栈的区别是什么?

作者: 许庭洲    时间: 2012-8-3 10:06
1,堆就直接是内存区域了,它是为了栈的引用而开发内存的;
2,栈是一种数据结构,栈中每个指针会指向堆中的某一内存区域或说是空间;
3,作为数据结构的概念,堆是一种经过排序的树形数据结构,每个结点都有一个值。堆的特点是根结点的值最小/最大,且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队列等;
4,作为内存的概念,堆是程序员自己申请的空间,比如c里面的malloc和 c++ 的 new 得到的空间,使用后要自己释放;栈一般是程序自己分配的空间,用于存放函数的参数、返回地址、局部变量等。
作者: 李晋    时间: 2012-8-3 14:09
堆栈是一种数据结构,它是在内存中开辟一块存储区域,
区别:申请方式 堆是动态分配的需要程序员自己申请,并指明大小 栈 系统自动分配
      申请后系统的响应 当系统收集到程序的申请会寻找第一个空间大于所申请空间的堆结点,并将这个节点是空闲的这个记录删掉。对于大多数系统会在这块内存空间中的首地址处记录本次分配的大小  栈 如果栈的剩余空间大于所申请空间,系统自动给分配否则提示溢出
      申请大小  堆的大小受限于计算机的虚拟内存所以比较大   栈 比较小
      生长方向 堆是向着内存地址增加的方向   栈是向着内存地址减少的方向
      申请效率   堆比较慢   栈比较快
   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2