| 維度 | 指針/內存 (語言機制) | 算法/數據結構 (計算思維) |
|---|---|---|
| 難點本質 | **間接引用**認知負荷:指針指向指針、函數指針、void* 泛型、所有權轉移、生命周期管理 | **抽象建模**能力:問題→數學模型→數據結構選型→算法設計→複雜度分析→邊界處理 |
| 典型癥狀 | 段錯誤、野指針、雙重釋放、內存洩漏、緩衝區溢出、ABA 問題、數據競爭 | 超時 (TLE)、爆棧 (RE)、邏輯錯誤 (WA)、優化無從下手、面試白板寫不出 |
| 攻克關鍵 | 工具先行 (Sanitizers/Valgrind/GDB) + 畫內存圖 + 所有權註解 + 封裝安全 API | 經典題刷透 (LeetCode Hot 100) + 手寫核心代碼 (紅黑樹/B+Tree/LSM/一致性哈希) + 複雜度證明 |
| 精通標誌 | 能寫無鎖隊列、自定義分配器、內核驅動、JIT 編譯器後端 | 能設計分布式一致性協議、高性能數據庫存儲引擎、編譯器優化器 |
int *p = &a; *p = 10;、malloc/free、鏈表增刪改查;**pp」「為什麼這裡會 UB」「如何用 Sanitizer 定位」。**先攻克指針/內存 (語言機制)**,它是 C 語言的靈魂,也是所有高級特性 (智能指針/所有權/借用檢查/GC/RAII) 的底層邏輯。
**再深耕算法/數據結構 (計算思維)**,它是解決複雜問題的通用工具,與語言無關。
兩者並行,以 **CSAPP (計算機系統要素)** 為橋樑:用 C 實現 Lab (Data Lab, Bomb Lab, Malloc Lab, Proxy Lab) 同時鍛造兩者。