gpt4 book ai didi

c++ - 静态变量定义时间 C++

转载 作者:搜寻专家 更新时间:2023-10-31 02:11:45 25 4
gpt4 key购买 nike

我遇到了一个我不知道答案的问题,所以我在这里发帖 :)静态变量是在程序开始时定义(未初始化)的,还是在我输入它定义的函数时定义的?

我知道静态变量的初始化发生在它定义的函数中,但我不是在谈论初始化而是定义,当它在我的存储中占用空间时。

我发现它总是在比 main 中的局部变量低的地址?有关系吗?如果之前定义了变量,它们是否总是位于地址较低的位置?谢谢你的回答

最佳答案

请考虑典型 C/C++ 程序的内存布局,例如,来自 CS-fundamentals.com .

enter image description here

外部变量(来自其他模块)、全局变量和静态变量的位置称为未初始化数据段(或bss)。由于程序无法猜测将调用哪些函数,因此有理由相信所有局部范围内的静态变量都将在程序开始时定义其位置。

局部变量(离开函数时消失的变量)保存在栈区。

这几乎就是我们对内存变量位置的了解。其他任何事情在很大程度上取决于编译过程的代码生成步骤的作者的决定。

关于c++ - 静态变量定义时间 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43125599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com