哪些段常量数据存储?

时间:2014-07-14 23:06:28

标签: c linux

我试图了解存储哪个段常量数据。

例如

const int x = 100

1)存储x的位置?在代码段或数据段?

2)是否有任何“只读”和#39;数据段是否存在于初始化数据段中?

2 个答案:

答案 0 :(得分:7)

根据编译器,编译器标志,链接器,链接器标志和周围代码的具体情况,数据将存储在任何段或多个段中,或根本不存储段。

在Linux / ELF上,如果它存储在某个地方,它通常会存储在.rodata部分中,该部分位于具有r-x权限的段内。据我所知,ELF细分没有名字。

但是,在许多情况下,这些常量会被内联。

答案 1 :(得分:3)

可能不在任何段中,因为这些常量在编译时被解析,并且在需要时直接使用它们的值。

一般来说,有 rodata 部分,它确实适用于只读数据部分,这是通常数据段内的一个特殊部分,意在完全用于这个目的