[問題] 關於C++在VS2017上的溢位
開發平台(Platform): (Ex: Win10, Linux, ...)
WIN10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
VS2017
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
堆疊為主緩衝區的滿溢
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式無法順利跑完
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
補充說明(Supplement):
各位前輩好
小弟想要把一個大型程式從VS2003升到VS2017
由於這個程式經手人很多 所以程式有點大且有點雜
目前做法是在VS2017建構在一個一個問題解決
編譯及鏈結問題已解決但在程式運行時遇到堆疊溢位的問題
(之前在VS2003是不偵錯執行,但在VS2017不偵錯執行會直接關閉程式所以改用偵錯執行)
因為時間上的關係重寫是不太可能了
且小弟功力不足所以重構上也需要花很多時間
想詢問各位前輩如果遇到這種問題會怎麼解決
再請各位前輩給小弟一點方向
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.200.146
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1534907998.A.3A6.html
→
08/22 11:37,
5年前
, 1F
08/22 11:37, 1F
前輩您好 這個部份我有嘗試將堆疊及堆積設定為1000000 不過仍會發生溢位
※ 編輯: asdfg1597860 (59.127.200.146), 08/22/2018 14:09:34
→
08/22 14:17,
5年前
, 2F
08/22 14:17, 2F
前輩您好 現在我的想法也是抓bug 不過溢位的地方無跡可尋
目前猜測是程式指標回傳時找不到位置或是靜態記憶體配置太多(因為是C/C++語言寫的)
※ 編輯: asdfg1597860 (59.127.200.146), 08/22/2018 17:04:05
推 yamakazi: 你記憶體多大? 嵌入式比較容易overflow吧
前輩您好 程式是Base在window上喔 用MFC及C&C++寫成的
→
08/22 19:09,
5年前
, 3F
08/22 19:09, 3F
前輩您好 我目前偵錯模式運作下他會在某個函式中表示溢位,但這函式裡沒有recursive
只有MFC 中的Domodal函式
※ 編輯: asdfg1597860 (59.127.200.146), 08/23/2018 10:00:03
→
08/23 17:30,
5年前
, 4F
08/23 17:30, 4F
→
08/23 17:31,
5年前
, 5F
08/23 17:31, 5F
→
08/23 17:31,
5年前
, 6F
08/23 17:31, 6F
https://imgur.com/a/BDRQNB9 附上我部份程式及溢位資訊,呼叫堆疊只有在溢位時才會出現訊息
→
08/23 17:33,
5年前
, 7F
08/23 17:33, 7F
目前能確定的有宣告大小為1024的char array
※ 編輯: asdfg1597860 (59.127.200.146), 08/27/2018 09:22:09
→
08/27 09:43,
5年前
, 8F
08/27 09:43, 8F
→
08/27 09:47,
5年前
, 9F
08/27 09:47, 9F
前輩您好 這是OnLesson的程式 https://imgur.com/a/NXv15OF
這函式用來作流程控管 另外我嘗試前加入輩說OnLesson開頭宣告Array char buf[1024] 狀況會一樣
※ 編輯: asdfg1597860 (59.127.200.146), 08/27/2018 11:19:29