1intmain()
210 printf("
&i = %x\n
", &i);
11return0;
12 }
執行結果
&a[0]= 19392bf0
&a[1]= 19392bf4
&a[2]= 19392bf8
&a[3]= 19392bfc
&a[4]= 19392c00
&a[5]= 19392c04
&a[6]= 19392c08
&a[7]= 19392c0c
&a[8]= 19392c10
&a[9]= 19392c14
&i = 19392c18
看到了吧 &a[10] 的位址就會和 &i 重合,如果資料越界賦值的話,就會死迴圈。
死迴圈**
1intmain()
210 printf("
&i = %x\n
", &i);
11return0;
12 }
執行結果
&a[0]= 12d4b3e0
&a[1]= 12d4b3e4
&a[2]= 12d4b3e8
&a[3]= 12d4b3ec
&a[4]= 12d4b3f0
&a[5]= 12d4b3f4
&a[6]= 12d4b3f8
&a[7]= 12d4b3fc
&a[8]= 12d4b400
&a[9]= 12d4b404
&a[1]= 12d4b3e4
&a[2]= 12d4b3e8
&a[3]= 12d4b3ec
&a[4]= 12d4b3f0
&a[5]= 12d4b3f4
&a[6]= 12d4b3f8
&a[7]= 12d4b3fc
&a[8]= 12d4b400
&a[9]= 12d4b404
&a[1]= 12d4b3e4
&a[2]= 12d4b3e8
&a[3]= 12d4b3ec
&a[4]= 12d4b3f0
&a[5]= 12d4b3f4
&a[6]= 12d4b3f8
&a[7]= 12d4b3fc
&a[8]= 12d4b400
&a[9]= 12d4b404
就這樣迴圈下去。。。
&a[10]的位址和i重合,
i++ 到10 時 ,被複製為1,
也就是陣列越界就會和變數的位址重合,挺危險的。。。
陣列越界出現死迴圈問題
1 include 2 3int main 4 7for i 3 i 11return0 12 執行 是會陷入輸出hello world的死迴圈。原因是陣列越界,a 3 的位址指向了變數i的位址。這讓我疑惑,為什麼a 3 的位址指向變數i的位址?經過大佬的解釋 才理解。因為會進行8位元組對齊,i的位...
C語言中陣列越界訪問造成死迴圈現象
本篇文章純屬娛樂,沒太多技術性的東西。只是我覺得還比較有意思,所以記一下!大俠請繞道!include int main int argc,char argv printf program is end n return 0 很顯然,在本段 中,出現了乙個越界操作的問題。不過幸運的是,編譯還是通得過的...
C語言中陣列越界導致死迴圈的測試
include 如何把這段 變成死迴圈,就像 c語言缺陷和陷阱 裡描述的那樣 經過測試發現,變數i的位址和a crazynum 的位址一樣,當執行 a crazynum 0 相當於i 0 所以死迴圈跑起來啦。測試環境 win7 32 dev c 4.9.9.2 c語言缺陷和陷阱 中的場景是編譯器按照...