每當宣告變數時,電腦便在記憶體中的某處為它建立空間. 如果在函式(像main())中宣告變數,電腦會將它儲存在堆疊(stack)的記憶體區段中. 如果在函式以外宣告的全域變數,它將被儲存於記憶體的全域(globals)區段.
Stack(堆疊)
用於儲存區域變數的記憶體區段. 每當呼叫函式時,該函式的所有區域變數都會在堆疊上被建立. 每當進入函式時,區域變數被疊上去,當離開時,區域變數就從上面被拿掉. 要注意的是,堆疊的運作方式是從上往下發展的,它從記憶體的頂端開始並往下成長.
Heap(堆積)
Heap是針對動態記憶體(dynamic memory)而設的. 在程式執行時被建立的資料片段,程式動態的索取空間(malloc)並在使用完畢後須自行釋放該空間(Free).
Globals(全域區段)
全域變數是存在於所有函式之外的變數,在整個程式中都可被看到.
Constants(常數區段)
常數也是在程式一開始執行時被建立,但它們被儲存在唯讀記憶體.
Code(程式碼區段)
許多作業系統都將程式碼配置在最低的記憶體位址,程式碼區段也是唯讀的.