我试图了解存储哪个段常量数据。
例如
const int x = 100
1)存储x的位置?在代码段或数据段?
2)是否有任何“只读”和#39;数据段是否存在于初始化数据段中?
答案 0 :(得分:7)
根据编译器,编译器标志,链接器,链接器标志和周围代码的具体情况,数据将存储在任何段或多个段中,或根本不存储段。
在Linux / ELF上,如果它存储在某个地方,它通常会存储在.rodata
部分中,该部分位于具有r-x
权限的段内。据我所知,ELF细分没有名字。
但是,在许多情况下,这些常量会被内联。
答案 1 :(得分:3)
可能不在任何段中,因为这些常量在编译时被解析,并且在需要时直接使用它们的值。
一般来说,有 rodata 部分,它确实适用于只读数据部分,这是通常数据段内的一个特殊部分,意在完全用于这个目的