[問題] gcc 最佳化後 改變程式結果

看板C_and_CPP (C/C++)作者 (嘎嘎嘎嘎嘎)時間13年前 (2013/02/20 05:23), 編輯推噓2(208)
留言10則, 8人參與, 最新討論串1/1
問題(Question): 請問各位大大 如果在程式都沒有錯的前提下 程式內也沒有用到跟時間或是跟亂數有關的函式 對於 gcc 下不下 -O3 這種最佳化參數,有沒有可能會導致程式的結果不一樣? 因為剛剛我發現 我寫的程式 下了 -O0 或 -O1 參數,跟我下了 -O2 或 -O3 參數 結果居然不一致 補充說明(Supplement): 使用的 gcc 版本: gcc version 4.3.2 (Debian 4.3.2-1.1) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.60.254.60

02/20 05:48, , 1F
在看不到 code 的前提下,只能說你的程式需要作些修改。
02/20 05:48, 1F

02/20 05:59, , 2F
02/20 05:59, 2F

02/20 06:04, , 3F
sorry 因為程式有點複雜 所以沒有 PO 出來
02/20 06:04, 3F
Debug 好久,發現是變數未初始化的問題... 明明知道導致結果變動,大部分是變數未初始化或是dangling pointer 這種低級錯誤 可是偶而還是會粗心寫錯 順便問一下有沒有可以自動偵測這種低級錯誤的工具? ※ 編輯: xxxx9659 來自: 61.60.254.60 (02/20 07:20)

02/20 07:29, , 4F
gcc.exe -Wall -Werror
02/20 07:29, 4F

02/20 08:55, , 5F
Linux 還有 valgrind 可以抓這種錯誤
02/20 08:55, 5F

02/20 09:48, , 6F
cppcheck
02/20 09:48, 6F

02/20 20:31, , 7F
120%是程式問題 XD
02/20 20:31, 7F

02/20 22:14, , 8F
有遇過 pthread 在用 -O3 時 valgrind 會報 leak
02/20 22:14, 8F

02/22 12:30, , 9F
其實最常出問題的應該都是該加volatile沒加
02/22 12:30, 9F

02/22 12:31, , 10F
不過好像現在的gcc -Ox對volatile的做法統一了的樣子
02/22 12:31, 10F
文章代碼(AID): #1H8-rkEh (C_and_CPP)
文章代碼(AID): #1H8-rkEh (C_and_CPP)