当堆栈弹出一个值时,它存储在哪里?

时间:2018-01-28 14:27:04

标签: c memory stack

让我们举个例子:阶乘函数。

你的程序调用fact(2)返回2 * fact(1),将调用推送到堆栈,然后调用fact(1)返回1 * fact(0)并最终调用fact(0)返回1。

但是如果你想获得事实(2)的结果,那么你需要从堆栈弹出所有的调用。所以,要调用fact(1)你需要知道什么返回事实(0),但如果你从堆栈中弹出它,你在哪里可以找到值?

我不知道为什么我说'#34;你",但是这里"你"是电脑。

我所知道的在C中使用内存的方式是它分为两部分(动态和静态)。在动态部分中,有堆(malloc分配一些空间)和堆栈(其开头由寄存器SP(堆栈指针)指示)。我的问题是计算机管理堆栈的方式。还有静态存储器,我们可以在其中找到两个主要部分:读取和写入(.bss(初始化为0)和.data)和只读(存储程序的.rodata和.text)。

0 个答案:

没有答案