将存储哪个段全局const变量以及原因

时间:2014-05-30 07:02:30

标签: c const

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


2 个答案:

答案 0 :(得分:1)

由于文本段是只读的,因此可以在运行程序的所有进程之间共享,从而可能减少内存消耗。这对于共享库来说更为重要,共享库可能被许多程序使用。这是否真的发生取决于您的操作系统的行为。

在文本段中放置带有静态存储的const变量可确保尽可能地利用此机制。

答案 1 :(得分:0)

编译器有更好的机会使用const变量进行优化。在这里,看起来const值被合并到代码中,因此文本段的大小也会增加。