哪些变量存储在堆栈中?

时间:2015-11-04 20:19:41

标签: stack

例如,如果我有一个使用过的程序:

example = a.top

变量example存储在哪里? 存储在堆栈中弹出的值在哪里?

额外:

如果我有一个没有函数的基本程序,只是将一些值加在一起就像(变量等于用户输入):

a=8
b=2
c=5
d=2
answer = a+b+c+d

变量a,b,c,d,答案是否会存储在堆栈或其他区域?

1 个答案:

答案 0 :(得分:0)

这个问题很难回答,因为它很大程度上取决于你使用的语言。

实际上,在C / C ++ / Pascal或传统的命令式语言中,人们会告诉你它们在堆栈上或堆上。

当你考虑CPU的一些优化可能会将它们存储在寄存器中时(即使你要求一个局部变量),甚至......无处可去,它会变得复杂:编译器只是删除变量如果没用的话

另一种可能性是当你有内存映射数据(mmap()被调用)你有数据可能在内核空间(直接某些内核页面)或从文件(存储在磁盘上)

当使用解释型语言(python / perl / bash)时,它们由解释器本身处理,可能在堆上。

使用函数式语言,事情会变得更加困难,因为这些概念(堆栈)具有非常不同的含义,可以说一切都在堆栈上(与您可能想象的C堆栈几乎没有关系)

相关问题