堆栈是什么意思?

如题所述

问题一:什么叫做堆栈? 堆和栈是两个不同的概念。 堆(heap)上分配的内存,系统不释放,而且是动态分配的。栈(stack)上分配的内存系统会自动释放,它是静态分配的。运行时栈叫堆栈。栈的分配是从内存的高地址向低地址分配的,而堆则相反。由malloc或new分配的内存都是从heap上分配的内存,从heap上分配的内存必须有程序员自己释放,用free来释放,否则这块内存会一直被占用而得不到释放,就出现了“内存泄露(Memory Leak)”。这样会造成系统的可分配内存的越来越少,导致系统崩溃。 堆栈是一种执行“后进先出”算法的数据结构。 设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构的特点。 堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入――push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“栈底”。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减 1。这个过程叫做“弹出pop”。如此就实现了后进先出的原则。 而堆栈寄存器就是存放堆栈的寄存器。

问题二:什么叫堆栈 堆栈是内存区开辟出来为函数中定义的变量(除了new以外的定义)提供存储空间的区域。
顾名思义,数据在堆栈中 的存储就是一个一个堆上去的,就是说后放的变量存在最上面(栈顶),所以从堆栈中取出变量时它最先被取出,(后进先出)。

问题三:堆栈的意思和作用 堆栈就是一个特殊内存区域,
用来存放数据
可以用指令PUSH ,POP 操作
主要是用来存放临时数据,比如局部变量,某个函数过程中定义的变量
堆栈是先进后出方式
比如说有个过程求和
int fun(int a,int b)
{
return a+b;
}
void main()
{
int z;
z=fun(5,6)
printf(%d,z)
}
调用fun过程时操作系统会使用堆栈来传递参数,
首先PUSH 5
PUSH 6
CALL FUN
又或者在调用过程前将各个寄存器先保存起来因为数量有限在本过程中可能用到同样的寄存器被覆盖原来的值
main
mov ax,6
mov bx,7
call proc
...
proc1 proc
push ax ;先入
push bx
子过程程序中用到AX,BX
pop bx
pop ax ;后出
ret
proc1 endp

问题四:什么是堆栈及堆栈的作用是什么 堆栈是小说中常用的人物塑造方法,通常是为一个小人物所用。举个例子,某剑客非常之吊,被称为天下无敌。可是,一个小人物在与他正面的斗争中,不用任何手段就击败了他,表现出他惊人的实力。这就是对这个小人物的堆栈,为的就是把他通过别人巨大实力的转换成这个人物的威望。这就是堆栈

问题五:堆栈向下增长是什么意思? 堆和栈是两个概念,堆向上增长,栈向下增长。
向下增长的意思是:从栈申请的内存地址会越来越小,
而从堆申请的内存地址会越来越大。

问题六:谁给详细解释一下plc的堆栈是什么意思,是在理解不了 PLC中CPU进行运算过程中,在需要进堆栈的时候才进堆栈。
比如:
1、不需要进堆栈的
LD X0
AND X1
OUT Y0.
这样的不需要进堆栈,因为每次运算的结果都存在CPU累加器A里面。(书上讲的)
2、需要进堆栈的,这段指令在执行过程中,就有数据进堆栈。(分号后加注释)
LD X0 ;取了X0的状态放进累加器
OR X1;把X1的状态与累加器内状态进行 或 运算。
LD X2;这时候如果直接取X2的状态进累加器,那前面两条指令的就白干了。
所有这条指令有隐 含操作,那就是把前面两条指令运算的结果,进行进堆栈保护,
然后再把X2的状态取进累加器。
OR X3;接着,取X3的状态与累加器或 运算
ANB ;这条执行是,就是将堆栈最上面的状态值(也就是前面进堆栈被保护的)
与当前累加器的状态进行与运算。这也就是书上说的,块 与指令。
OUT Y0;输出。
从上面分析我总结了,只要是出现LD,必须要有输出。没输出,再有LD,那必定有进堆栈操作。
这个进堆栈是PLC系统自己完成。只要你编程正确,也没必要理会他。

问题七:堆栈和栈有什么区别? 堆和栈是两个不同的概念,堆是动态内存,malloc,new等操阀在堆里面分配空间;栈里面放函数调用参数,局部变量。
对专业人士而言,一般习惯把堆和栈分开来讲。有些地方也把栈笼统地叫做堆栈,也就是说你这里说的堆栈就是指栈。你只要搞清楚堆和栈的区别就可以了。

问题八:堆栈是什么意思?如果堆栈的入栈系列是a,b,c,d,e,则输出序列是什么?并解释一下! 堆栈是一种“后进先出”的数据结构。出栈序列“e,d,c,b,a。后进入的先出来。

问题九:栈是什么意思? 栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。 栈是一种数据结构,是只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。 栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。 栈也称为后进先出表(LIFO--Last IN First Out表龚。 栈可以用来在函数调用的时候存储断点,做递归时要用到栈!
上面已经说得很清楚了
虽然是复制的
温馨提示:答案为网友推荐,仅供参考
相似回答