經典指針規範 (C 風格)
- 宣告即初始化為 `NULL`/`nullptr`**:
int *p = nullptr; 避免野指針。
- 分配後檢查、使用前斷言**:
p = malloc(n); assert(p);
- 釋放後立即置 `nullptr`**:
free(p); p = nullptr; 防雙重釋放、懸空指針誤用。
- 所有權明確**:誰分配誰釋放,文檔標註 `// owner`。
現代 C++ 核心準則 (C++11/14/17/20)
| 舊式做法 | 現代替代 | 優勢 |
| 裸指針 `new`/`delete` | `std::unique_ptr` / `std::shared_ptr` | RAII 自動釋放、無洩漏、所有權語意清晰 |
| 手動 `malloc`/`free` | `std::vector` / `std::string` / `std::make_unique` | 記憶體管理封裝、例外安全 |
| 指針傳遞陣列 | `std::span` (C++20) / `std::vector&` | 帶長度、邊界安全 |
| `NULL` / `0` | `nullptr` | 類型安全、避免整數隱式轉換 |
推薦閱讀
《高質量 C/C++ 程式設計指南》—— 林銳 (暢銷 20 年經典)
- 涵蓋命名、佈局、函數、類、記憶體、效能、測試等全維度規範。
- 配合 **C++ Core Guidelines** (isocpp.github.io/CppCoreGuidelines) 現代化觀念。
團隊落地建議
- 引入 **clang-format** 統一格式 (Google/LLVM 風格)。
- CI 整合 **clang-tidy** / **cppcheck** 靜態分析強制檢查。
- Code Review 清單含:裸指針檢查、RAII 遵循、錯誤碼 vs 例外一致性。
- 新專案**預設 C++17 以上**,舊專案逐模組遷移智能指針。
- 上一篇文章: Android Back 鍵返回桌面而非銷毀 Activity:啟動 Home Intent 保持後台運行
- 下一篇文章: Java 環境變數配置圖解:JAVA_HOME、Path 正確設定與驗證
Copyright ©
程式碼之家 All Rights Reserved