考慮這兩個C++頭的情況:靜態數組常量是否影響共享庫佈局?
情況1:
class Test {
public:
static int TEST_DATA[];
};
int Test::TEST_DATA[] = { 1, 2, 3, 4 };
情況2:
class Test {
public:
static int const TEST_DATA[];
};
int const Test::TEST_DATA[] = { 1, 2, 3, 4 };
是在後一種情況下,只有對自我施加的編譯時檢查或確實常量它會影響Mac/Linux/Windows上的共享庫佈局?
更新:根據回答,編譯器可能會把常量放在只讀頁面上。 是否 Windows或GCC上的Visual C++ 在Mac或Linux上實際上是將const數據放在只讀頁面上?也許我測試了錯誤的方式,但在Intel上的Mac上,const版本的元素似乎是可寫的。