c - 静态常量存储在哪里?

标签 c static constants memory-layout

如果常量是全局定义的,它将转到 text 段。局部常量被推送到堆栈上。静态变量存储在 databss 段中,具体取决于它是否就地初始化以及初始化的内容。

静态常量怎么样? This question链接到另一个仅关于静态变量,而不是常量的链接。我认为静态常量应该作为只读变量存储在 text 段中,但我不确定。它通常存储在哪里?

最佳答案

static const 可以在编译时折叠。如果不是,则将其存储在 databss 段中,就好像它是 static 一样(但其他模块无法链接到它)。将其存储在 text 段中是有效的,但很少有编译器这样做。我只在嵌入式编译器中看到过它,其中 RAM/ROM 的区别很重要。较新的工具链通常有一个采用静态和全局常量的 rodata 段。

关于c - 静态常量存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65171072/

相关文章:

c++ - int8_t 和 char : converts between pointers to integer types with different sign - but it doesn't

c# - 是将要从 main() 调用的所有方法声明为静态的还是创建一个包含包括 main 在内的所有方法的类的对象更好?

c# - 我需要在静态对象上调用 Dispose() 吗?

c++ - 添加 const 正确性

java - final 是否静态重要吗?

c++ - 用 C 语言访问文件以实现 OPC UA 协议(protocol)

将枚举变量转换为枚举类型

C++:常量引用,在类型说明符之前 vs 之后

c++ - `struct X typedef` 与 `typedef struct X` 的含义是什么?

javascript - JS 静态属性与使用类名添加属性