堆和栈的区别

原创 2015年11月20日 12:59:49

在 上一篇博客中提到过堆和栈,但是堆和 栈的区别 并没有讲清楚

   堆和栈的区别:
  一、堆栈空间分配区别:
  1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
  2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
  二、堆栈缓存方式区别:
  1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
  2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
  三、堆栈数据结构区别:
  堆(数据结构):堆可以被看成是一棵树,如:堆排序;
  栈(数据结构):一种先进后出的数据结构。 

这样的例子很多,然而真正使用的时候他们的差别并不是很大,比如,在C++中,我们新建一个对象 实例,可以通过以下两种方式进行: 

   class mycalss()

{

.....

}

在栈上创建一个对象 :myclass myclass;

在堆上创建一个对象:myclass* myclass = new myclass;

这带来的一个附带的区别是,在访问类的对象成员时,对于在栈上创建的一般是使用“.”来访问,而在堆上创建的对象成员则是使用“->”来进行的。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++中堆和栈的区别.doc

  • 2012-12-15 19:20
  • 44KB
  • 下载

堆与栈的区别详解

  • 2013-07-19 17:08
  • 40KB
  • 下载

静态存储区、栈区、堆区的区别

内存分配有三种:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数...

java中堆和栈的区别

  • 2012-03-25 09:50
  • 291KB
  • 下载

C语言堆和栈的区别

在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。 但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运 行时用于存放的地方,这可能是...

[堆][栈]的区别

  • 2012-02-12 15:37
  • 171KB
  • 下载

C语言中堆和栈的区别

 一.前言: C语言程序经过编译连接后形成编译、连接后形成的二进制映像文件由栈,堆,数据段(由三部分部分组成:只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成,如下图所示...

堆和栈的区别

  • 2013-05-10 21:36
  • 32KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)