1.程序段
存放程序代碼的一段區域,程序段是隻讀的
2.數據段
存放已經初始化的全局變量,屬於靜態內存分配
3.bss段
BSS(Block Started by Symbol)存放程序中未初始化的全局變量和靜態變量
4.堆
保存進程中被動態分配的內存
#include <stdlib.h>
void *malloc(size_t size);
void free(void *ptr);
void *calloc(size_t nmemb, size_t size);
void *realloc(void *ptr, size_t size);
5.棧
存儲程序中臨時創建的局部變量,函數調用,參數入棧,出棧過程也在棧中完成
6.static
靜態局部變量:局部變量的數值就是上一次調用之後的數值
靜態全局變量:只能在本程序中使用這個全局變量
7.register
寄存器變量:和編譯器相關,這個變量會被頻繁的使用,被保存到寄存器中,不能對寄存器變量取地址&
8.volatile
不穩定,易變的,使用volatile修飾的變量其數值可能會發生改變
使用場景:
多進程,多線程,共享數據
硬件寄存器0x12345678
一箇中斷服務子程序中使用的非自動變量