1 #include 2執行**是會陷入輸出hello world的死迴圈。3int
main()4;
7for(; i<=3; i++)
11return0;
12 }
原因是陣列越界,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 很顯然,在本段 中,出現了乙個越界操作的問題。不過幸運的是,編譯還是通得過的...