void strtol(char s[]) {
int i = 0;
while (s[i++]);
while (i >= 0)
s[i--] = s[i]; // i 會變 -1,s[-1] 越界
}
s[i--] = s[i] 先取值 s[i] 再遞減 i,實際執行 s[i] = s[i](無操作),再 i--。但 i 從字串長度遞減至 -1,循環條件 i >= 0 滿足,進入迴圈體時 i = -1,寫入 s[-1] 破壞棧上相鄰數據。-fsanitize=address -fno-omit-frame-pointer (GCC/Clang) → 運行時精準報告越界位置。/RTC1 /GS 執行期檢查 + 棧保護。cppcheck --enable=all、Clang-Tidy。**不報錯 ≠ 正確**。C 將邊界檢查責任留給程式設計師,務必自行保證索引合法。