代碼對比:
for (i = 0; i <= 10; i++) {
printf("你好聰明\n");
arr[i] = 0; // i=10 時訪問 arr[10] 越界
}
arr[10] 正好覆蓋棧上 i 的存儲位置(典型棧佈局:arr[0..9] 後緊跟 i),將 i 置 0,導致循環條件 i <= 10 永真 → 死循環。
for (i = 0; i < 10; i++) { // <= 改為 <
printf("你好聰明\n");
arr[i] = 0;
}
輸出 10 次後正常結束。
arr[10] 與 i 相鄰是編譯器常見優化,非標準保證。< size。-Wall -Wextra -fsanitize=address)。std::array/vector(C++)或靜態分析工具。