const
限定符应用于任何全局变量后,会增加文本段的大小。 那么,为什么全局const变量将存储在文本段中。
我试过这些代码
const int i = 5;
int main()
{
return 0;
}
输出命令:size a.out
text data bss dec hex filename
1080 496 16 1592 638 a.out
int i = 5;
int main()
{
return 0;
}
输出命令:size a.out
text data bss dec hex filename
1076 500 16 1592 638 a.out
答案 0 :(得分:1)
由于文本段是只读的,因此可以在运行程序的所有进程之间共享,从而可能减少内存消耗。这对于共享库来说更为重要,共享库可能被许多程序使用。这是否真的发生取决于您的操作系统的行为。
在文本段中放置带有静态存储的const变量可确保尽可能地利用此机制。
答案 1 :(得分:0)
编译器有更好的机会使用const
变量进行优化。在这里,看起来const
值被合并到代码中,因此文本段的大小也会增加。