例如,如果我有一个使用过的程序:
example = a.top
变量example
存储在哪里?
存储在堆栈中弹出的值在哪里?
额外:
如果我有一个没有函数的基本程序,只是将一些值加在一起就像(变量等于用户输入):
a=8
b=2
c=5
d=2
answer = a+b+c+d
变量a,b,c,d,答案是否会存储在堆栈或其他区域?
答案 0 :(得分:0)
这个问题很难回答,因为它很大程度上取决于你使用的语言。
实际上,在C / C ++ / Pascal或传统的命令式语言中,人们会告诉你它们在堆栈上或堆上。
当你考虑CPU的一些优化可能会将它们存储在寄存器中时(即使你要求一个局部变量),甚至......无处可去,它会变得复杂:编译器只是删除变量如果没用的话
另一种可能性是当你有内存映射数据(mmap()被调用)你有数据可能在内核空间(直接某些内核页面)或从文件(存储在磁盘上)
当使用解释型语言(python / perl / bash)时,它们由解释器本身处理,可能在堆上。
使用函数式语言,事情会变得更加困难,因为这些概念(堆栈)具有非常不同的含义,可以说一切都在堆栈上(与您可能想象的C堆栈几乎没有关系)