Q56.
標準C 語言程式中,使用malloc()動態取得記憶體空間後,必須釋放記憶體空間,否則會造成何種問題?
數位電子 · 乙級 · 程式語言 · Q56
難易度分析
2 / 5
此題目要求區分程式執行過程中常見的幾種錯誤類型。考點在於理解動態記憶體配置與回收機制之間的關聯,並能精確辨識特定行為(未釋放資源)所對應的專業術語,屬於基礎概念的理解與辨析。
正確答案:②memory leak
② memory leak:memory leak(記憶體洩漏)是指使用 malloc() 動態配置記憶體後未呼叫 free() 釋放,導致該區塊記憶體無法被系統回收重複使用,長期執行將耗盡可用記憶體資源。
錯誤選項解析
- ① memory out of bound:memory out of bound(記憶體越界)是指存取超出已配置記憶體範圍的位址,通常由陣列索引越界或指標運算錯誤造成,與未釋放記憶體無關。
- ③ syntax error:syntax error(語法錯誤)是原始碼違反 C 語言語法規則,會在編譯階段被編譯器偵測到,與執行期的記憶體管理行為無關。
- ④ linker error:linker error(連結錯誤)發生在連結階段,通常是因為找不到函式庫或符號定義,與執行期是否釋放動態記憶體無關。
Learning Tip
"本題核心考點為 malloc() 與 free() 的配對使用。常見陷阱是混淆 memory leak(未釋放)與 memory out of bound(越界存取)。實務上,每次呼叫 malloc/calloc/realloc 後,務必在適當位置呼叫 free(),且釋放後應將指標設為 NULL 以避免 dangling pointer(懸空指標)問題。"
學員答題分佈
①memory out of bound0%
②memory leak0%
③syntax error0%
④linker error0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!