如果常量是全局定义的,它将转到 text
段。局部常量被推送到堆栈
上。静态变量存储在 data
或 bss
段中,具体取决于它是否就地初始化以及初始化的内容。
静态常量
怎么样? This question链接到另一个仅关于静态变量,而不是常量的链接。我认为静态常量应该作为只读变量存储在 text
段中,但我不确定。它通常存储在哪里?
最佳答案
static const
可以在编译时折叠。如果不是,则将其存储在 data
或 bss
段中,就好像它是 static
一样(但其他模块无法链接到它)。将其存储在 text
段中是有效的,但很少有编译器这样做。我只在嵌入式编译器中看到过它,其中 RAM/ROM 的区别很重要。较新的工具链通常有一个采用静态和全局常量的 rodata
段。
关于c - 静态常量存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65171072/