我获得了关于静态变量存储的矛盾意见.
意见1:" 堆栈静态变量将其值存储在堆中 "
意见2:" 堆栈静态变量将其值存储在数据段中".
我对这些相互矛盾的答案感到困惑.
哪里存储了静态变量?
我期待着参考文献的答案(教科书,真实的教程等).
静态变量有两种类型:
我还想知道这两种变量的存储是否存在差异?
Jon*_*ler 10
'堆栈变量'通常存储在'堆栈'中,它与程序的文本,数据,bss和堆部分分开.
你的问题的后半部分是关于'静态'变量,它们与堆栈变量不同 - 实际上,静态变量根本不存在于堆栈中.传统上,静态变量都将出现在程序的数据或bss部分中.对于现代编译器,如果数据是const限定的,那么数据可以存储在程序的文本部分中,这具有多种好处(包括强制的非可修改性).
C标准没有规定存在堆栈,也没有bss部分.它只需要存储空间可用于具有适当持续时间的变量.
| 归档时间: |
|
| 查看次数: |
11624 次 |
| 最近记录: |