免費開始練習
高考申論題 106年 [資訊處理] 程式語言

第 二 題

📖 題組:
二、程式語言中,指標(Pointers)是一個非常強大有用的工具,但是也可能為程式帶來 Dangling Pointer 和 Memory Leakage 問題。(25 分) (一)請使用下列的 C 程式碼說明何謂 Dangling Pointer 和 Memory Leakage 問題,並解釋其發生原因。 int *p1, *p2, *p3, *p4; p1 = (int*) malloc (sizeof(int)); p2 = p1; free p1; p3 = (int*) malloc (sizeof(int)); p4 = (int*) malloc (sizeof(int)); p3 = NULL; (二)請從 Compiler 的角度,說明什麼方法可以解決這兩個問題?
📝 此題為申論題,共 2 小題

小題 (二)

請從 Compiler 的角度,說明什麼方法可以解決這兩個問題?

思路引導 VIP

看到此題,應先思考編譯器與程式語言層級如何介入記憶體管理。可以從『編譯期(Compile-time)』的靜態檢查(如 Rust 的所有權機制、資料流分析),以及『執行期(Run-time)』的自動管理機制(如垃圾回收、智慧指標、墓碑機制)兩大面向切入作答。

🤖
AI 詳解
AI 專屬家教

【破題】 從編譯器與程式語言設計的角度來看,解決 Dangling Pointer(懸浮指標)與 Memory Leakage(記憶體漏失)問題,主要可透過「編譯期靜態檢查(Static Analysis)」與「執行期自動記憶體管理(Runtime Management)」兩大類方法。 【論述】

小題 (一)

請使用下列的 C 程式碼說明何謂 Dangling Pointer 和 Memory Leakage 問題,並解釋其發生原因。
int *p1, *p2, *p3, *p4;
p1 = (int*) malloc (sizeof(int));
p2 = p1;
free p1;
p3 = (int*) malloc (sizeof(int));
p4 = (int*) malloc (sizeof(int));
p3 = NULL;

思路引導 VIP

面對指標與記憶體管理的題目,首先應在腦海中或紙上畫出「指標」與「記憶體區塊」的指向關係圖(Memory Map)。透過逐行追蹤動態配置(malloc)、指標賦值(aliasing)、釋放(free)與覆寫(= NULL)的過程,精準找出何處記憶體被釋放但仍有指標殘留(迷途指標),以及何處記憶體尚未釋放卻已失去所有指標參照(記憶體洩漏)。

🤖
AI 詳解
AI 專屬家教

【破題】 指標在動態記憶體管理中極具彈性,但不當的記憶體釋放或參照遺失,會分別導致迷途指標(Dangling Pointer)與記憶體洩漏(Memory Leakage)問題,嚴重影響程式穩定性。 【論述】

🏷️ 相關主題

C/C++ 程式語言之記憶體管理與物件生命週期
查看更多「[資訊處理] 程式語言」的主題分類考古題

📝 同份考卷的其他題目

查看 106年[資訊處理] 程式語言 全題