变量的存储在内存中,通常涉及以下几个部分:
- 栈区:变量名通常存储在栈区(空间小,运行速度快),栈区用来存储
变量名、函数名、常量名
等。当你声明一个变量(比如$a
),变量名$a
会被存储在栈区。 - 堆区:
局部变量、复杂数据结构(如数组、对象)
通常会被存储在堆区(空间大,运行速度慢)。当你创建一个对象或数组时,它们的数据会被存储在堆区。 - 全局数据区:
全局变量、静态变量、常量值
等会被存储在全局数据区,这些数据在整个程序执行期间都是可访问的。 - 代码区:
函数、方法等代码
会被存储在代码区。
$a = 100;
创建变量时:
- 将变量值100存储在全局数据区的变量区,同时产生存储地址oxFF;
- 在栈区开辟空间,存储变量名$a,并且将变量值的存储地址存储在栈区的变量名中。
读取变量:
通过变量名$a 在栈区拿到变量的 在全局数据区的变量区的存储地址oxFF,然后去对应地址读取值。
PS:
局部变量
存储在内存中哪里?答:堆区。