关闭

堆和栈的区别

标签: 堆和栈的区别
167人阅读 评论(0) 收藏 举报
分类:

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

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

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

   class mycalss()

{

.....

}

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

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

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4983次
    • 积分:197
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条