????????全局变量和局部变量在内存中是怎样存放的?两者之间有何区别?
????????全局变量(包括外部变量和静态变量,无论是静态全局变量还是非静态全局变量)通常存储在程序的全局数据区或静态存储区。这个区域在整个程序执行期间一直存在,直到程序结束时才由系统自动释放。
????????全局变量一旦被创建,在整个程序运行过程中都会保持其值不变(除非显式修改),因此它们占用的是永久性的内存空间。
?
????????局部变量(包括函数内部定义的自动变量)通常存储在栈(stack)中。栈是用于存放函数调用时产生的临时变量、函数参数以及返回地址的空间。
????????每当函数被调用时,局部变量会在栈上分配内存空间;当函数调用结束并返回时,该函数所使用的栈帧会被弹出,此时局部变量所占用的内存也随之释放,即局部变量的生命周期与所属函数的执行过程相同。
????????总结来说,全局变量和局部变量的主要区别在于生存周期和作用域,这也决定了它们在内存中不同的存储方式和管理策略。全局变量具有更长的生命期且作用范围跨越整个程序,而局部变量的生命期局限于它所在的函数执行期间,作用域仅限于函数内部。