全局变量什么时候分配内存

来源:百度知道 编辑:UC知道 时间:2024/05/28 11:11:45
c语言中的全局变量是在程序运行之初就注入内存,还是在要用到它的时候注入内存的??也就是说是先执行main函数,还是最先执行全局变量注入内存??
java程序又如何??

c语言中的全局变量,分为初始化的(int abc=100),和未初始化的(int abcd).
初始化的全局变量,在程序加载的时候,会从程序文件中,映射(大部分操作系统,只有第一次使用该地址空间时,才加载到内存中)到内存的数据段。未初始化的全局变量部分,映射到进程地址空间的数据段,Unix中,用到该数据的时候,自动0填充。

进程的运行过程如下。
1)地址映射,代码段,数据段等映射到逻辑地址空间
2)main才开始运行。
3)代码访问 “逻辑地址空间”中的内容,该地址空间尚未加载到物理内存时,加载之。

java程序又如何??

1) JVM 加载 类数据流。
2)分析类的安全性,
3)JVM建立、分配类信息。类的静态成员分配,静态初始化执行
4) JVM调用 main()
5)main 建立类实例,初始化实例成员,运行构造函数
6) 。。。。

在C语言中,全局变量是在main函数内部定义的,按照程序运行步骤,自当是先执行主函数然后再执行全局变量内存,局部变量才是是根据自己的需要的时候才注入内存处理器。

java 中同理!

在程序中main函数是入口,一切函数文件包都是从此函数进入,只有先执行主函数程序才能运行。

程序运行之前,加载的时候

java也一样