栈区:栈区主要存放的是已知固定大小的变量(简单类型变量,如字符串、数值、布尔值)!
变量存放形式:【变量名】 【内存分配的变量地址】【变量值】 ;
如:$carname [0x111] [vv7]
简单类型变量并没有涉及到堆区的使用,
如果在程序中一个变量赋值给另一个变量的话,是把变量的变量值赋给另一个变量,而内存分配的变量地址并没有一起赋给这个变量;
如果在程序中一个变量采用引用的方式赋值的话,就是把变量在内存中的地址和变量值一起赋值给新的变量;从而只要改变其中任一个变量的值,另一个变量也都会随着改变;
堆区:堆区主要存放不能固定大小的变量值,如对象、数组!
变量名与内存地址存放在栈区,对象或数组的值就存放在堆区中;
栈中:【变量名】【内存分配的变量地址】:对象名
堆中:【变量值】:对象内容
如果在程序中对象赋值给另一个变量,是把变量在内存中的地址赋值给新变量,从而只要改变其中任一个变量的值,另一个变量也都会随着改变;
如果在程序中数组赋值给另一个变量,是把变量在内存中的变量值赋值给新变量;
全局区:全局区主要放置常量(字面常量+define定义的常量) 预定义变量 静态变量(就是函数内外都能使用的值)
代码区:代码区 主要放置的是运行的代码和函数。