[問題] new一個新物件會當掉(更新抓到問題)

作者: HateAnus (討厭從後面來)   2018-04-16 23:45:01
開發平台(Platform): (Ex: Win10, Linux, ...)
Dev cpp
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
TDM-GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
//
作者: djshen (djshen)   2018-04-16 23:49:00
13行確定會跳出?
作者: crazycy (LCY)   2018-04-16 23:54:00
delete?喔 沒事 當我沒說
作者: djshen (djshen)   2018-04-16 23:58:00
code不詳細錯誤訊息也不詳細不如擲筊你可以用debugger
作者: flyfoxy (飛狐)   2018-04-17 00:00:00
sInput[i+1]越界,當下沒當,而是當在後面奇怪的地方
作者: asilzheng (asil)   2018-04-17 00:33:00
與一樓有相同的疑問,覺得13行沒跳出造成Str1違規存取
作者: shadow0326 (非議)   2018-04-17 00:46:00
就是sInput[i+1]的鍋吧
作者: asilzheng (asil)   2018-04-17 01:54:00
Str100的型別是什麼?我猜是char[100],而且Str1沒給結束字元,造成strcpy複製過多而出錯
作者: ilikekotomi (Young)   2018-04-17 01:57:00
全部code傳github比較有幫助 這樣才知道Str100做什麼
作者: asilzheng (asil)   2018-04-17 01:57:00
這段程式有多處會造成違規存取,沒修好死在奇怪的地方都不意外猜測13行的檢查在沒有空白的時候,會越過結束字元,迴圈停不下來且造成記憶體破壞,剛好結束迴圈後是new,才誤以為是new出問題
作者: joe820730 (Let it go)   2018-04-17 09:22:00
這沒把完整程式碼上傳跟擲筊差不多...
作者: hunandy14 (Charlott.HonG)   2018-04-17 14:36:00
實際上被你隱藏起來的地方是有關連的如果真的要隱藏,可以開一個單檔最小化重現bug把你覺得重要的地方砍一砍保留會錯誤的部分砍到最簡
作者: Neisseria (Neisseria)   2018-04-17 16:33:00
這時候就要拿 http://sscce.org/ 出來
作者: rbufghj9713 (我只是來潛水)   2018-04-18 01:02:00
struct的你有做typedef嗎?不知道沒做會不會有問題
作者: djshen (djshen)   2018-04-18 01:08:00
strcpy要copy到哪去?我知道你想幹嘛 但你知道你要copy去哪?
作者: loveflames (咕啾咕啾魔法陣)   2018-04-18 13:29:00
就是因為這個才當機
作者: djshen (djshen)   2018-04-18 13:38:00
你覺得char*會指到哪裡
作者: hunandy14 (Charlott.HonG)   2018-04-18 17:08:00
64行補 tk->tokenStr = new char[strlen(temp)];更正 還要+1, 這樣應該可以理解了吧QuQ 自己找地方del行數我有砍到 是78
作者: ilikekotomi (Young)   2018-04-18 21:20:00
因為CharPtr沒有分配空間 所以才會當機
作者: joe820730 (Let it go)   2018-04-19 21:33:00
char array在編譯期就配好記憶體,當然不會出錯而char pointer如果你沒有new或malloc一個空間給它,你根本不知道它會指到哪,當機也就理所當然了
作者: dzwei (Cout<< *p << \n ;)   2018-04-21 03:31:00

Links booklink

Contact Us: admin [ a t ] ucptt.com