我遇到了一个我不知道答案的问题,所以我在这里发帖:) 静态变量是否在程序启动时或当我进入定义它的函数时定义(未初始化)?
我知道静态变量的初始化发生在它定义的函数中,但我不是在谈论初始化,而是在谈论定义,当它占用我的存储空间时。
我发现它总是位于比 main 中的局部变量低的地址?有关系吗?如果之前定义了变量,它们的地址是否总是较低?感谢您的回答
最佳答案
请考虑典型 C/C++ 程序的内存布局,例如 CS-fundamentals.com 。
外部变量(来自其他模块)、全局变量和静态变量的位置称为未初始化数据段(或bss)。由于程序无法猜测将调用哪些函数,因此可以合理地相信所有作用域内的本地静态变量都将在程序开始时定义其位置。
局部变量(离开函数时消失的变量)保存在堆栈区域中。
这几乎就是我们所知道的有关内存变量放置的所有信息。其他任何事情很大程度上取决于编译过程的代码生成步骤的作者的决定。
关于c++ - 静态变量定义时间 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43125599/