【发布时间】:2014-07-19 21:01:41
【问题描述】:
在将const 限定符应用于任何全局变量后会增加文本段的大小。
那么,为什么全局 const 变量会存储在文本段中。
我试过这些代码
const int i = 5;
int main()
{
return 0;
}
命令输出:size a.out
文本数据 bss dec 十六进制文件名
1080 496 16 1592 638 a.out
int i = 5;
int main()
{
return 0;
}
命令输出:size a.out
文本数据 bss dec 十六进制文件名
1076 500 16 1592 638 a.out
【问题讨论】:
-
它存储在文本段中,因为文本段是只读的(不可写),因此将变量放在那里会强制执行常量。无论放置在何处,这对您来说都不是问题。
-
但是 const 限定符意味着通过其他方式进行更改......那么将其存储在文本中的意义何在
-
阙?你在想
volatile吗?const表示“无法更改”。 -
是的,关键字
const不会将变量转换为常量!带有const限定符的符号仅表示该符号不能用于赋值。这使得值只能通过该符号读取; .所以它将放入文本段(只读)。 -
我们可以通过使用指针来改变 const 变量的值......所以如果它将存储在文本段中,那么它将如何改变??