記憶體四區分析

2021-06-28 23:32:15 字數 902 閱讀 3187

**區

**區code,程式被作業系統載入到記憶體的時候,所有的可執行**都載入到**區,也叫**段,這塊記憶體是不

可以在執行期間修改的。

靜態區

所有的全域性變數以及程式中的靜態變數都儲存到靜態區,比較如下兩段**的區別

#include int a = 0;

int main()

int a = 0;

static int b = 0;

int main()

int a = 10;

int b = 100;

int main()

int *p = &b;

printf("%d\n", *(++p));//可以訪問到200

//printf("%p, %p, %p\n", &a, &b, &c);

return 0;

}

通過列印出來的位址,可以分析出結論。 棧區

棧stack是一種先進後出的記憶體結構,所有的自動變數,函式的形參都是由編譯器自動放入棧中,當乙個自動變數

超出其作用域時,自動從棧中彈出。

堆區 堆heap和棧一樣,也是一種在程式執行過程中可以隨時修改的記憶體區域,但沒有棧那樣先進後出的順序。

堆是乙個大容器,它的容量要遠遠大於棧,但是在c語言中,堆記憶體空間的申請和釋放需要手動通過**來完成。

記憶體四區筆記

include include include void print arr int buf,int n int main 棧中陣列 void malloc size t size char p1 malloc sizeof char 1000 free p1 int p malloc sizeof...

記憶體四區專題

程式的記憶體四區模型 1.作業系統把物理硬碟 load到記憶體中 2.作業系統把c 分成四個區 3.作業系統找到main函式入口執行 4.在被呼叫函式裡面malloc的記憶體,首位址傳給別呼叫哪個函式有兩種方法 a.return b.指標做函式引數 5.主呼叫函式分配的記憶體 堆 stack 全域性...

1 記憶體四區

資料型別的概念 型別 是對資料的抽象,型別相同的資料有相同的表現形式 儲存格式以及相關的操作。程式當中使用的所有資料都必定屬於某一種資料型別。資料型別的本質 資料型別可以理解為建立變數的模具,是固定記憶體大小的別名。資料型別為編譯器預算物件 變數 分配指定的記憶體空間大小。資料型別的別名 inclu...