永发信息网

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

答案:6  悬赏:10  手机版
解决时间 2021-12-03 15:18
  • 提问者网友:佞臣
  • 2021-12-02 18:13
数据结构的堆栈,和内存空间的堆栈有什么区别和关系吗??
最佳答案
  • 五星知识达人网友:三千妖杀
  • 2021-12-02 18:53
数据结构中的一般称“栈(stack)”,是一种后进先出的数据结构。它是一种概念,或者说是一种逻辑技术,与语言、平台无关。
内存管理中的“堆栈”其实是分为堆(heap)和栈(stack)的,以引用变量为例,引用变量本身存储在栈中,引用变量指向的值存储在堆中。
如int[] arr = {1, 2, 3};
变量arr(数组名)存储在栈中,变量arr的值(数组元素)存储在堆中(普通结构)。
内存管理中的栈采用的就是数据结构中的栈的思想,即遵循后进先出的管理方法。
好比数据结构中的栈是一项先进的技术,在内存管理中采用了该技术,在CPU的调度中可能也采用这种技术。
全部回答
  • 1楼网友:轻雾山林
  • 2021-12-03 00:18
你可以找本书看下,很简单的
  • 2楼网友:逐風
  • 2021-12-03 00:08
数据结构的堆栈就不说了,本质就是一种数据结构而已,内存中的堆栈表示的是两个不同使用方式的内存区,所有的全局变量都是放在堆上的,而程序的局部变量则是放在栈中的,叫堆栈是因为他们的使用方式类似于数据结构中的堆栈。
  • 3楼网友:鸠书
  • 2021-12-02 23:31
程序运行时内存的栈和数据结构的栈类似,这个栈主要用来放临时变量和函数参数的,结构也是先进后出

但内存的堆和数据结构的堆石两码事,内存的堆一般用来动态分配内存的,如malloc(),或c++里的new非配的内存就是动态分配的内存的。至于内存中的堆如何实现的,可能和操作系统和编译器有关,我感觉一般的内存的堆好像是用链表实现的。

至于更详细的我也不太清楚了,建议你查看相关资料
  • 4楼网友:低血压的长颈鹿
  • 2021-12-02 21:52
我说一下内存管理中的堆栈,个人之见,仅供参考。
在编写程序时(比如C、C++等),可以简单地把内存分为三个不同的区域:
1、栈,即我们平常说的堆栈,英文为stack,存放自动变量、函数调用产生的临时变量等,该内存空间由编译器自动分配、释放以及管理,访问效率高,但不灵活,空间也小。
2、堆,英文为heap,该内存空间需要程序员手动申请、释放,如C的malloc、free以及C++的new、delete等,平常说的内存泄露就是操作堆引起的,由于需要手动管理,所以访问效率较低,但可以根据需要灵活使用。
3、静态存储区,也是编译器自动管理的,用于存放全局变量、局部静态变量等,与栈中变量的区别是在程序运行期间一直保存变量的值。
  • 5楼网友:荒野風
  • 2021-12-02 20:21
数据结构中的一般称“栈(stack)”,是一种后进先出的数据结构。它是一种概念,或者说是一种逻辑技术,与语言、平台无关。
内存管理中的“堆栈”其实是分为堆(heap)和栈(stack)的,以引用变量为例,引用变量本身存储在栈中,引用变量指向的值存储在堆中。
如int[] arr = {1, 2, 3};
变量arr(数组名)存储在栈中,变量arr的值(数组元素)存储在堆中(普通结构)。
内存管理中的栈采用的就是数据结构中的栈的思想,即遵循后进先出的管理方法。

好比数据结构中的栈是一项先进的技术,在内存管理中采用了该技术,在CPU的调度中可能也采用这种技术。追问那是不是在内存管理中,凡是采用了栈技术的都成为栈区呢?
或者说在咱们的系统中,堆区是采用了堆的数据结构管理,栈区是采用了栈的数据结构管理?追答A:那是不是在内存管理中,凡是采用了栈技术的都成为栈区呢?
B:在咱们的系统中,堆区是采用了堆的数据结构管理,栈区是采用了栈的数据结构管理?
A不对,B正确。
栈区是采用栈技术的内存区域,但不能认定凡是采用栈技术的区域都叫栈区,虽然目前的实际情况是这样。这是一个关于定义的准确问题。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯