c++ - 静态数组常量会影响共享库布局吗?

标签 c++ dll linker constants

考虑这两个 C++ 头文件:

案例一:

class Test {
  public:
    static int TEST_DATA[];
};
int Test::TEST_DATA[] = { 1, 2, 3, 4 };

案例二:

class Test {
  public:
    static int const TEST_DATA[];
};
int const Test::TEST_DATA[] = { 1, 2, 3, 4 };

在后一种情况下,const 仅用于 self 强加的编译时检查还是会影响 Mac/Linux/Windows 上的共享库布局?

更新:根据答案,编译器可能将常量内容放在只读页面上。 是否 Windows 或 GCC 上的 Visual C++ 在 Mac 或 Linux 上实际上将 const 数据放在只读页面上?也许我测试的方式不对,但在 Mac on Intel 上,const 版本的元素似乎是可写的。

最佳答案

编译器可能会将数据放入二进制文件的不同部分,具体取决于它是否为 const - 这完全由编译器自行决定。

关于c++ - 静态数组常量会影响共享库布局吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/167109/

相关文章:

java - GWT 2.8 无法使自定义链接器工作

c++ - Direct2D 深度缓冲区

c - Fortran调用DLL Visual Studio 2010

c++ - VBA 64 位 Excel 不将指针传递给 DLL 函数 (C++)

c# - Affectiva mscorlib.dll 和依赖项错误

xamarin - 强制(或友好地询问)链接器链接掉特定程序集

ubuntu - 仅在 Ubuntu 32/64 位上出现 `boost::log2_mt` 的链接错误

c++ - 为什么我不能从迭代器构造 std::span ?

c++ - 比较BGR图像是否完全相同

c++ - C++中获取/设置方法变量的方法声明的编程风格?