A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李帅 中级黑马   /  2012-8-3 09:38  /  1434 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

堆栈具体指是什么东西?   堆和栈的区别是什么?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

2 个回复

倒序浏览
1,堆就直接是内存区域了,它是为了栈的引用而开发内存的;
2,栈是一种数据结构,栈中每个指针会指向堆中的某一内存区域或说是空间;
3,作为数据结构的概念,堆是一种经过排序的树形数据结构,每个结点都有一个值。堆的特点是根结点的值最小/最大,且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队列等;
4,作为内存的概念,堆是程序员自己申请的空间,比如c里面的malloc和 c++ 的 new 得到的空间,使用后要自己释放;栈一般是程序自己分配的空间,用于存放函数的参数、返回地址、局部变量等。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
堆栈是一种数据结构,它是在内存中开辟一块存储区域,
区别:申请方式 堆是动态分配的需要程序员自己申请,并指明大小 栈 系统自动分配
      申请后系统的响应 当系统收集到程序的申请会寻找第一个空间大于所申请空间的堆结点,并将这个节点是空闲的这个记录删掉。对于大多数系统会在这块内存空间中的首地址处记录本次分配的大小  栈 如果栈的剩余空间大于所申请空间,系统自动给分配否则提示溢出
      申请大小  堆的大小受限于计算机的虚拟内存所以比较大   栈 比较小
      生长方向 堆是向着内存地址增加的方向   栈是向着内存地址减少的方向
      申请效率   堆比较慢   栈比较快
   

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马