[問題] 關於C++在VS2017上的溢位

作者: asdfg1597860 (Jay)   2018-08-22 11:19:55
開發平台(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不偵錯執行會直接關閉程式所以改用偵錯執行)
因為時間上的關係重寫是不太可能了
且小弟功力不足所以重構上也需要花很多時間
想詢問各位前輩如果遇到這種問題會怎麼解決
再請各位前輩給小弟一點方向
作者: bluesoul (忙死你老爸)   2018-08-22 11:37:00
增加stack size
作者: block (blah)   2018-08-22 14:17:00
看一下/GS 參數說明,就懂原因了,修bug吧
作者: bluesoul (忙死你老爸)   2018-08-22 19:09:00
stack爆掉和malloc或是new無關,recursive太多層了
作者: LPH66 (-6.2598534e+18f)   2018-08-23 17:30:00
你在偵錯模式應該能看到呼叫堆疊, 看裡面有沒有一堆函數遞迴太多層的狀況會在裡面看到一個出現很多次的函數那裡就是你的問題所在
作者: descent (「雄辯是銀,沉默是金」)   2018-08-23 17:33:00
有沒有開很大的 array 區域變數
作者: sarafciel (Cattuz)   2018-08-27 09:43:00
看起來不是stack炸掉 是超寫到DEP的barrier上去了你在OnLesson開頭多宣告一個大一點char Array試試

Links booklink

Contact Us: admin [ a t ] ucptt.com