1. 程式人生 > >全域性/靜態儲存區、常量儲存區

全域性/靜態儲存區、常量儲存區

全域性/靜態儲存區:全域性變數和靜態變數被分配到同一塊記憶體中;

常量儲存區:存放的是常量,是不允許修改的。

靜態儲存是main函式執行前分配記憶體並初始化;常量儲存是固化在執行檔案上的資料。

棧的方向和平臺有關,一般來說,windows由高地址向低地址增長,linux相反,但基於linux的第三方系統得看實際情況才知道。

常量儲存區裡面的資料是放在程式碼段裡的,不佔記憶體。

靜態儲存區是在記憶體空間中的,在其所屬的類(或檔案)中是全域性的。

請注意:

C和C++中,const修飾的變數所在的儲存區是不一樣的。

在C中,const修飾的變數儲存在“”中。

在C++中,const修飾的變數被定義為一個常量是放在程式碼段裡的,是在常量儲存區

中的。

原因如下(Linux環境下):

在C中,如圖的程式碼是可以編譯(gcc編譯)通過,並且可以改變的,說明const修飾的不是一個常量。

 


同樣的程式碼,在C++下編譯不通過(g++編譯),如圖: