我正在研究基于存储绑定的绑定过程和变量分类。所以,我面临四种变量:
- 静态变量:它们在执行之前(即编译期间)绑定到内存,并在整个执行过程中保持绑定。
- 堆栈动态变量:这些变量在编译时静态绑定到类型,但在代码执行到达声明之前它们不会绑定到内存位置。
- 显式堆动态变量:这些变量通过显式运行时、程序员指定的指令分配和释放。堆而不是堆栈用于提供所需的存储单元。
- 隐式堆动态变量:这些变量的所有属性,包括内存单元,在被赋值时都是绑定的。
我的问题是关于类型 2 和 4。在类型绑定是动态的编程语言中(Php、Ruby、Python,...),所有变量似乎都是类型 4。
这是真的吗?所有变量甚至局部变量都放在堆上?这是实现的事情还是不可能实现具有动态类型绑定的语言,其局部变量放在堆栈中而其他变量放在堆中?