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

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


慕尼黑8549860
浏览 983回答 2
2回答

米脂

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

MYYA

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