全局变量和局部变量有什么区别?怎么实现的?操作系统和编译器是怎么知道的?
全局变量是整个程序都可访问的变量,生存期从程序开始到程序结束;局部变量存在于模块中(比如某个函数),只有在模块中才可以访问,生存期从模块开始到模块结束。
全局变量分配在全局数据段,在程序开始运行的时候被加载。局部变量则分配在程序的堆栈中。因此,操作系统和编译器可以通过内存分配的位置来知道来区分全局变量和局部变量。
全局变量和局部变量的区别是在存储器中位置不同,具体说,全局变量存储在数据段中,局部变量一般来说在堆栈段