絕不會。 你正在使用的作業系統 (Windows/Linux/macOS)、瀏覽器、辦公軟體、遊戲、驅動程式,**絕大多數核心模組都是用 C/C++ 編寫的**。如果 C 語言本身「損電腦」,現代計算體系早已崩潰。
| UB 類型 | 典型代碼 | 後果 | 防範 |
|---|---|---|---|
| 緩衝區溢出 | `strcpy(dst, src);` `dst` 太小 | 棧/堆破壞、任意代碼執行風險 | `strncpy`/`strlcpy`/`snprintf`、編譯器 `-fstack-protector-strong`、ASan |
| 有符號整數溢位 | `int a = INT_MAX; a++;` | 編譯器假設不溢位進而優化掉檢查邏輯 | 使用無符號型別、編譯器 `-ftrapv`、UBSan、手動檢查 |
| 空指標解引用 | `int *p = NULL; *p = 1;` | 進程崩潰 (SIGSEGV),核心態則系統崩潰 | 防禦性檢查、靜態分析 (Clang-Tidy)、編譯器 `-fdelete-null-pointer-checks` 注意副作用 |
| 釋放後使用 | `free(p); *p = 2;` | 堆元數據破壞、資訊洩露、任意寫入 | 釋放後置 `NULL`、所有權語義 (單一擁有者)、ASan |
| 嚴格別名規則違反 | `float f = 1.0f; int i = *(int*)&f;` | 編譯器假設不同類型指標不指向同一記憶體,導致錯誤優化 | 使用 `union`、 `memcpy`、 `std::bit_cast` (C++20) 或 `char*` 別名 |