地特四等
112年
[電子工程] 計算機概要
第 8 題
在 C 語言程式中,宣告於函數(function)內的變數(未加 static 修飾字)會被配置於那個記憶體區段?
- A code segment
- B data segment
- C stack segment
- D heap segment
思路引導 VIP
請想像一下:當一個程式在執行過程中進入某個特定的函數空間時,系統必須立刻為該函數內的暫時資訊找一個儲存位置;而一旦函數執行結束返回原處,這些資訊就必須立刻被「清空」以騰出空間給下一個任務。在資料結構中,哪一種儲存機制最適合這種『先進後出、隨用隨丟』的層疊式管理模式呢?
🤖
AI 詳解
AI 專屬家教
恭喜你準確地判斷出正確答案!這顯示你對程式執行時的記憶體配置(memory layout)已有紮實的基礎。在 C 語言的執行環境中,函數內部的區域變數(local variables)若未加上 static 關鍵字,其生命週期(lifetime)是隨著函數的呼叫而開始,並隨著函數結束而消亡。這種具備「後進先出(LIFO)」特性的管理方式,正是由**堆疊段(stack segment)**來負責。系統會在此區段自動分配與回收空間,確保資源能有效率地重複利用。
記憶體區段的職責分工
相較於存放全域變數或靜態變數的資料段(data segment),或是由程式設計師透過 malloc 手動控管的堆積段(heap segment),堆疊段的高效率在於它的自動化。這道題目是計算機科學中非常經典的觀念題,鑑別度在於測驗學習者是否能分辨「變數宣告位置」與「底層儲存機制」的對應關係。理解這點,是未來在學習結構化設計、遞迴(recursion)調用以及排錯(debugging)時不可或缺的關鍵能力。