C語言程式裡全域性變數 區域性變數 堆 棧

2021-10-11 11:59:51 字數 886 閱讀 8899

1.實驗環境

1.ubuntu20

全域性變數、靜態區域性變數儲存在全域性資料區,初始化的和未初始化的分別儲存在一起。普通區域性變數儲存在堆疊中。

在c\c++中,通常可以把記憶體理解為4個分割槽:棧、堆、全域性/靜態儲存區和常量儲存區

1.記憶體棧區stack: 存放區域性變數名;

2.記憶體堆區heap: 存放new或者malloc出來的物件;

3.text & data & bss:**段與靜態分配

4.bss區(未初始化資料段):並不給該段的資料分配空間,僅僅是記錄了資料所需空間的大小。

5.data(初始化的資料段):為資料分配空間,資料儲存在目標檔案中。

2.原始碼haha.c

#include #include #include void before()

char g_buf[16];

char g_buf2[16];

char g_buf3[16];

char g_buf4[16];

char g_i_buf="123";

char g_i_buf2="123";

char g_i_buf3="123";

void after()

int main(int argc, char **ar**)

return 0;

}

3.效果

全域性變數 區域性變數 棧 堆

一般全域性變數存放在資料區,區域性變數存放在棧區,動態變數存放在堆區,函式 放在 區。棧區是普通的棧資料結構,遵循lifo後進先出的規則,區域性變數安排在那裡是asm時就規定的,這樣可以在乙個函式結束後平衡堆疊,操作簡單,效率高 堆 動態區 在這裡應當叫堆疊 不要和資料結構中的堆搞混 是程式在編譯時...

c 全域性變數 區域性變數

全域性變數即在函式外宣告的變數,區域性變數即在函式內部宣告的變數,例如 include float num 3.14 乙個名為num的全域性變數 void main float num 2.45 乙個名為num的區域性變數 cout3.14 當區域性變數和全域性變數同名時,在區域性變數作用域內使用該...

c 全域性變數,區域性變數

區域性變數又稱內部變數,是函式內部定義的變數,作用域在定義其的函式內部 全域性變數又稱外部變數,作用於是從其定義開始一直到源程式結束 不論是全域性變數還是區域性變數都是乙個空間上的範圍,即作用域 相對於變數的空間範圍,靜態和動態變數則指乙個時間上的範圍,所謂靜態變數就是在定義時分配固定儲存單元,知道...