[問題] 一個很神奇的問題..

看板C_and_CPP作者 (旺來)時間15年前 (2010/04/29 17:12), 編輯推噓2(207)
留言9則, 5人參與, 最新討論串1/1
我寫一個C語言的程式 碰到一個很怪的問題囧 在一個遞迴函式裡面會莫名其妙的segmentation fault 第一次發生是一進到函式裡面 宣告變數部分就會fault 後來又發生一次是呼叫第二次就fault 奇怪的地方是在... 第一次是只要把其中兩行變數宣告上下對調就正常了... (就真的是連續兩行很簡單的宣告 如下兩行 float X; int i, j;) 後來不知原因就正常不會再發生 第二次原本正常 但是把其中一行如下 printf("ok\n"); 拿掉就又發生莫名其妙的fault 可是沒多久之後就又莫名其妙拿掉也沒事了= = 完全不知道原因在哪@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.91.80 ※ 編輯: ownlai 來自: 140.112.91.80 (04/29 17:13)

04/29 17:19, , 1F
使用超出界線的記憶體問題, 檢查陣列的索引之類的
04/29 17:19, 1F

04/29 17:24, , 2F
感謝 剛剛自己找到第二次的問題 是陣列index沒錯
04/29 17:24, 2F

04/29 17:25, , 3F
做為index的變數宣告完忘了給初始值0
04/29 17:25, 3F

04/29 17:29, , 4F
不過不太明白 是因為多一行printf compiler會自動初始化?
04/29 17:29, 4F

04/29 17:38, , 5F
你運氣不好。 (真的)
04/29 17:38, 5F

04/29 17:39, , 6F
超出界線後存取到的值是不可預期的
04/29 17:39, 6F

04/29 17:39, , 7F
嗯...這裡應該是未初始化的值 總之值也是不可預期的
04/29 17:39, 7F

04/29 23:33, , 8F
請愛用 Debugger 來找出哪裡爛掉...
04/29 23:33, 8F

04/30 09:05, , 9F
多一行不會自動初始化,只是有可能恰好不會死(也是不可預期)
04/30 09:05, 9F
文章代碼(AID): #1BsKsC_R (C_and_CPP)