c - 静态存储在内存中的全局变量在哪里?

标签 c memory

在C中,全局变量存储在数据段中。但是我不知道全局静态变量将存储在哪里?

static int num;   //where will this variable get stored in memory?
int main(){
   //code 

}    

最佳答案

这些变量可以存储在不同的地方,标准没有强制要求任何特定的存储位置。根据情况,它们甚至可能存储在只读存储器中(如果未修改)或根本不存储(如果未使用)。甚至不需要位置固定(或单一)。

标准对存储提出的唯一要求是变量必须在函数调用中保持其值。

然而,通常的做法是将它们与全局变量放在一起。静态变量与全局变量的唯一区别是符号的范围。但是请注意,这只是一种可能性,我可以想象其他合理的解决方案。

要获得更准确的答案,您需要知道您使用的平台和工具链。

关于c - 静态存储在内存中的全局变量在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45024874/

相关文章:

Java 应用程序有 10% 的时间崩溃

c - C 语言的欧拉 8 项目,可以处理 4 位数字,但无法处理 13 位数字?

c - 是否可以保留指向局部变量超出该变量范围的指针?

c - malloc 结构指针数组

c - 查找回文,不适用于 fgets

Java Runtime.maxMemory 不正确?

c# - 为什么 MemoryStream 不提供采用 "long"容量的构造函数?

java - 再次调用函数比将其分配给变量更好

c++ - 什么是 Bison,它为什么有用?

c中的颜色变化bmp