1 /* bug.c */ 2 #include<stdio.h> 3 int main(void){ 4 int a[10],i; 5 for(i=1;i<=10;i++){ 6 a[i]=0; 7 // printf("%d ",a[i]); 8 // printf("i=%d ",i); 9 } 10 return 0; 11 }
原因如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/* 数组下标越界,如果 i 的内存地址正好在数组后面,那么当a[10]=0时,会将i自动清零,于是 i <= 10,开启死循环模式。 */
1 /* bug.c */ 2 #include<stdio.h> 3 int main(void){ 4 int a[10],i; 5 for(i=1;i<=10;i++){ 6 a[i]=0; 7 // printf("%d ",a[i]); 8 // printf("i=%d ",i); 9 } 10 return 0; 11 }
原因如下:
/* 数组下标越界,如果 i 的内存地址正好在数组后面,那么当a[10]=0时,会将i自动清零,于是 i <= 10,开启死循环模式。 */