为了账号安全,请及时绑定邮箱和手机立即绑定

关于数据结构的堆栈,和内存空间的堆栈有什么区别和关系吗?

关于数据结构的堆栈,和内存空间的堆栈有什么区别和关系吗?

数据结构的堆栈,和内存空间的堆栈有什么区别和关系吗?
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

数据结构中的一般称“栈(stack)”,是一种后进先出的数据结构。它是一种概念,或者说是一种逻辑技术,与语言、平台无关。
内存管理中的“堆栈”其实是分为堆(heap)和栈(stack)的,以引用变量为例,引用变量本身存储在栈中,引用变量指向的值存储在堆中。
如int[] arr = {1, 2, 3};
变量arr(数组名)存储在栈中,变量arr的值(数组元素)存储在堆中(普通结构)。
内存管理中的栈采用的就是数据结构中的栈的思想,即遵循后进先出的管理方法。
好比数据结构中的栈是一项先进的技术,在内存管理中采用了该技术,在CPU的调度中可能也采用这种技术。

查看完整回答
反对 回复 2019-09-14
?
MYYA

TA贡献1868条经验 获得超4个赞

在编写程序时(比如C、C++等),可以简单地把内存分为三个不同的区域:
1、栈,即我们平常说的堆栈,英文为stack,存放自动变量、函数调用产生的临时变量等,该内存空间由编译器自动分配、释放以及管理,访问效率高,但不灵活,空间也小。
2、堆,英文为heap,该内存空间需要程序员手动申请、释放,如C的malloc、free以及C++的new、delete等,平常说的内存泄露就是操作堆引起的,由于需要手动管理,所以访问效率较低,但可以根据需要灵活使用。
3、静态存储区,也是编译器自动管理的,用于存放全局变量、局部静态变量等,与栈中变量的区别是在程序运行期间一直保存变量的值。

查看完整回答
反对 回复 2019-09-14
  • 2 回答
  • 0 关注
  • 1049 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信