陣列越界出現死迴圈問題

2022-08-31 06:36:10 字數 935 閱讀 8213

1 #include 2

3int

main()4;

7for(; i<=3; i++)

11return0;

12 }

執行**是會陷入輸出hello world的死迴圈。

原因是陣列越界,a[3]的位址指向了變數i的位址。

這讓我疑惑,為什麼a[3]的位址指向變數i的位址?

經過大佬的解釋

才理解。

因為會進行8位元組對齊,i的位址就會緊跟陣列後面,當i=3時,陣列位址產生偏移即a[3]_address = base_address + 3 * type_size=i_address。然後i=0,就陷入了死迴圈中。

對於8位元組對齊,同樣

c 位址越界,死迴圈初探

1 intmain 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...

C C 分析陣列越界訪問導致死迴圈

閱讀下面 並分析導致其結果的原因 以下分析基於vs環境的除錯 include include intmain 擁有10個元素的整型陣列 for i 0 i 12 i 迴圈13次,越界訪問 system pause return0 分析 整型陣列arr有10個元素,for迴圈13次,導致陣列越界訪問。...

C語言中陣列越界訪問造成死迴圈現象

本篇文章純屬娛樂,沒太多技術性的東西。只是我覺得還比較有意思,所以記一下!大俠請繞道!include int main int argc,char argv printf program is end n return 0 很顯然,在本段 中,出現了乙個越界操作的問題。不過幸運的是,編譯還是通得過的...