2013年1月6日 星期日

記憶體

每當宣告變數時,電腦便在記憶體中的某處為它建立空間. 如果在函式(像main())中宣告變數,電腦會將它儲存在堆疊(stack)的記憶體區段中. 如果在函式以外宣告的全域變數,它將被儲存於記憶體的全域(globals)區段.

Stack(堆疊)
用於儲存區域變數的記憶體區段. 每當呼叫函式時,該函式的所有區域變數都會在堆疊上被建立. 每當進入函式時,區域變數被疊上去,當離開時,區域變數就從上面被拿掉. 要注意的是,堆疊的運作方式是從上往下發展的,它從記憶體的頂端開始並往下成長.

Heap(堆積)
Heap是針對動態記憶體(dynamic memory)而設的. 在程式執行時被建立的資料片段,程式動態的索取空間(malloc)並在使用完畢後須自行釋放該空間(Free).

Globals(全域區段)
全域變數是存在於所有函式之外的變數,在整個程式中都可被看到.

Constants(常數區段)
常數也是在程式一開始執行時被建立,但它們被儲存在唯讀記憶體.

Code(程式碼區段)
許多作業系統都將程式碼配置在最低的記憶體位址,程式碼區段也是唯讀的.

深入淺出C break & continue

break:
break陳述式被用來中斷迴圈及switch陳述式 <當你使用break時,務必知道你中斷的是甚麼>
break陳述式將中斷程式流,直接跳到當前迴圈之外,略過迴圈主體剩餘的部分.


continue:
如果想略過迴圈主體的其餘部分,並且回到迴圈的開頭,那麼continue陳述式是你的選擇