作者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