C 和 C 语言中静态变量和全局变量何时初始化?
在 C 和 C 语言中,静态变量和全局变量具有不同的初始化过程。与 C 不同,静态和全局对象在主函数之前进行构造,C 缺乏这样的初始化。
C 中的初始化时序
在 C 代码中,全局变量如global_int1 和 global_int2 没有显式初始化程序,由系统初始化为 0。但是,静态变量 static_int1 和 static_int2 未初始化。它们的值在程序中明确设置之前保持不确定。
C 中的初始化值
具有显式初始化器的变量(例如值为 5 的 global_int1)被分配其值由编译器作为代码翻译的一部分。该值存储在可执行文件的数据段中。
程序执行时,系统将可执行文件加载到内存中,包括数据段。然后为全局变量分配内存并使用数据段中存储的值进行初始化。
C 中的初始化阶段
C 遵循静态的三阶段初始化过程具有命名空间范围的对象:
C 中的内存管理
C 中的静态初始化值存储在可执行文件的数据段中。与 C 类似,这些值在程序执行期间加载到内存中并分配给相应的变量。
没有初始化器或动态初始化的变量在 bss 段中分配内存。系统在程序执行前将这些变量初始化为0。
以上是C 和 C 中静态变量和全局变量的初始化过程是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!