当前位置:主页 > bet365在线体育投注 >

c语言栈地址范围:

时间:2019-09-21 13:12   bet365在线体育投注  

展开全部
1.每个函数在调用时都会打开一个空格。
但是,在递归中,相同的函数会打开大量的堆栈空间。
即使不是递归的,每次调用时打开的堆栈空间通常也不相同。
将返回值,参数,局部变量和返回值存储在堆栈空间中。
执行期间局部变量的地址必须在堆栈空间中。
每个函数输出参数地址和局部变量。
您可以通过多次尝试来估计大概范围。
2.堆栈可以看作是一张卡,最上面的卡代表当前程序范围,这些程序通常是当前正在执行的功能。
当前函数中声明的所有变量都放在堆栈的顶部。即,存储器占据堆栈的顶部帧。这等效于卡的顶部卡。
如果当前函数调用另一个函数,例如,如果当前函数foo()调用另一个函数bar(),则将新卡添加到卡中,因此bar()具有其自己的A堆栈框架可供使用
从foo()传递到bar()的所有参数都将从foo()堆栈框架复制到bar()堆栈框架。
(注意:堆栈框架很有意义,因为它们为每个功能提供了单独的内存工作区。
如果在foo()堆栈框架中声明了一个变量,则除非您明确要求对该变量进行更改,否则调用bar()函数将不会更改。
同样,当foo()函数完成执行时,堆栈框架消失,并且该函数中声明的所有变量不再占用内存。