[問題] release下有問題

看板C_and_CPP作者 (5566Is)時間10年前 (2015/07/07 22:23), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) VC2013 問題(Question): 目前遇到在DEBUG下,變數經過像是GetWindowsTextW或是checkbox..等的傳遞 再到一大堆的運算後,是可以正常運用的 後來在release後去執行,發現所有的變數都無法正常的傳遞與應用 去google後,有提到可能是沒被初始化 想請問的是int與cstring等等變數都需要在OnInitDialog下被初始化? 或是在宣告時就要初始化呢? 初始化要讓int設定為0,cstring則要設為null還是_T("") 另外想請問在release時,要怎樣去debug呢?(用中斷點看不到變數的狀態) 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.36.235.123 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1436279000.A.D58.html

07/08 14:12, , 1F
release 無法debug是正常的
07/08 14:12, 1F

07/08 15:02, , 2F
我的release編譯都不最佳化改放-g,和debug有八成像(x
07/08 15:02, 2F

07/08 15:03, , 3F
沒初始化的主要是int, long, pointer之類的變數
07/08 15:03, 3F

07/08 15:04, , 4F
debug下每個byte會是0xFE release是0x00
07/08 15:04, 4F

07/08 15:36, , 5F
症狀有點像跨執行緒存取全域變數會發生的問題
07/08 15:36, 5F

07/08 15:38, , 6F
可以把變數宣告為 volatile 試試看
07/08 15:38, 6F
文章代碼(AID): #1Lc-3OrO (C_and_CPP)