您好、欢迎来到现金彩票网!
当前位置:盛宏彩票 > 访问周期 >

全局变量和静态变量为什么在进程的整个生命周期都可以访问?

发布时间:2019-06-11 18:30 来源:未知 编辑:admin

  刚学习C语言的时候,就知道全局变量和静态变量在程序运行的整个生命周期都可以访问,而局部变量只能在声明变量的函数中才可以访问,出了声明局部变量的函数,局部变量就被销毁了。也知道是因为局部变量是在进程的栈(stack)上分配的,而全局变量和静态变量是在某个段(segment)中的。可一直还是有点迷迷糊糊的样子,感觉不是很清楚。 最近在看Windows的内存管理和PE文件的格式,突然感觉这个问题变得清楚了很多。在Windows中,exe文件是直接映射到进程的地址空间的,而全局变量和静态变量是在生成的exe文件的某个段中,也就是说,当exe文件映射到进程的地址空间后,全局变量和静态变量就被映射到进程的地址空间,所以在程序运行的整个周期内,全局变量和静态变量都是可以访问的。而局部变量是在进程的栈上分配的,当函数执行完毕后,栈要恢复,所以局部变量只能在函数中使用。

http://monokkeli.net/fangwenzhouqi/423.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有