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