**區
**區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...