static初始化和赋值 linux系统中,初始化的全局变量和未初始化过的全局变量保存在哪?
linux系统中,初始化的全局变量和未初始化过的全局变量保存在哪?
由C/C编译的程序所占用的内存分为以下几部分:1。堆栈由编译器自动分配和释放,存储函数参数和局部变量的值。其操作类似于数据结构中的堆栈。2堆通常由程序员分配和释放。如果程序员没有释放堆,那么在程序结束时,操作系统可能会恢复堆。注意,它在数据结构上与heap不同。分配方法类似链表,哈哈。三。全局区域(静态)-将全局变量和静态变量的存储放在一起。初始化的全局变量和静态变量在一个区域中,未初始化的全局变量和未初始化的静态变量在另一个相邻区域中。-程序完成后,由系统发布。4文本常量区域-常量字符串放在这里。程序完成后,系统发布5。程序代码区-函数体的二进制代码。
static变量什么时候初始化?
它只执行一次
复制:
可以添加到学生类的构造函数中,例如:
运行时会发现它只打印一次
大致原理:
静态变量是类变量,第一次使用类时只初始化一次。类装入器中会有一个锁,以防止类被多次初始化。静态字段和静态代码块只执行一次。从编译器的角度来看,编译时编译器会按顺序收集静态字段和静态代码块,然后将其放入生成的<cinit>特殊方法中,初始化类时会调用<cinit>方法。
应用程序:
对于您的问题:
在前一个线程初始化之后,判断它是否已成功初始化,并直接获取结果
您的问题有点有趣。前一个线程的初始化可以说是取锁,然后执行锁代码。当锁退出时,锁代码的结果将完全同步,这是锁的一个特性(比如内存可见性)。然后下一个场景就是正常的结果
static初始化和赋值 file可以作为标识符吗 定义函数时未指定返回类型
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。