看板 EE_DSnP 關於我們 聯絡資訊
我用ubuntu,在還沒有寫任何code的狀況下,把dofiles裡面的do4放到ref中 然後直接執行modCalc-64,輸入do do4,程式就跑出 (...以上省略...) mcalc> mcalc> mcalc> 但是我接著再打do do4時,就Segmentation fault了... 請問這是我電腦有問題嗎,還是dofile指令不是這樣用的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.245.114
TommyKSHS:其實是因為有一千來個 do do4 被一千來個 mcalc> 擠掉了 11/05 23:43
puerpuella:可是為什麼打第二次就會crash了? 11/06 15:42
ric2k1:啊,那是因為我將 CmdParser 裡面的 MAX_HISTORY 設成 1024 11/07 00:13
ric2k1:執行第二次的時候 #histories 就超過 1024 了... 然後 11/07 00:14
ric2k1:_history[] 就會 access 到別人的地盤,但是 access 到的 11/07 00:15
ric2k1:那塊 memory 又沒有將 string construct, 所以就會 crash 11/07 00:15
ric2k1:解決的辦法是將 MAX_HOSTORY 調大, 像是改成 65536 之類的 11/07 00:16
ric2k1:但是我不確定你們可不可以 work,因為 cmdRead.o 是 11/07 00:17
ric2k1:pre-compile 好的... (請試試看讓我知道)。另外的根本解決 11/07 00:18
ric2k1:之道就是將 _history 改成 vector<string>,但是這牽涉到 11/07 00:18
ric2k1:我不想再 hw#2 就將 STL 牽扯進來... 所以...再說吧! 11/07 00:19
ric2k1:下個 homework 開始我會將 MAX_HOSTORY 設大一點... 11/07 00:20
TommyKSHS:我把 MAX_HISTORY 改成 65536 後,只要下一個指令都會 11/07 00:59
TommyKSHS:segementation fault... 11/07 00:59
TommyKSHS:改成 2048 也會 crash... 囧 11/07 01:00
ric2k1:That's why I guess... cmdReader.o 已經 precompiled 了 11/07 15:45
timrau:下次寫成用getenv()抓參數的吧 XD 11/08 20:52
hunallen:我似乎也有這個問題 11/08 20:55
hunallen:-File do6也會炸掉 11/08 20:59
ric2k1:to timrau, yes, that's a good suggestion. 11/09 12:59