看板 EE_DSnP 關於我們 聯絡資訊
如果mtn一些Size >= 256的array (mtn 1 -a 258) 再用mtd 將記憶體回收 (-i or -r) 接著無論輸入什麼command,在CmdParsr::parseCmd都會產生Assertion failed 例如: mtest> mtn 1 -a 256 Calling allocArr...(3592) Calling MemMgr::getMem...(3592) Memory acquired... 0x1c3c860 mtest> mtd -i 0 -a Calling freeArr...(0x1c3c860) >> Array size = 256 Recycling 0x1c3c860 to _recycleList[256] mtest> xxxx memTest.debug: cmdParser.cpp:150: CmdExec* CmdParser::parseCmd(std::string&): Assertion `str[0] != 0 && str[0] != ' '' failed. 已經終止 但使用gdb又難以抓到我想要看的_history[_historySize - 1] 會出現 No symbol "_historySize" in current context. 不太清楚應該break在哪個階層才能找到bug... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.39.169
dostaevsky:而且size小的array不會有錯 05/10 14:45
ric2k1:如果這樣的現象在不同的人的 memMgr.h 的 implemenations 05/10 15:56
ric2k1:都會發生, 那就可能是 cmd 的問題, 否則, 就很可能是你的 05/10 15:58
ric2k1:code 造成一些 memory 的 bug, 最常見的就是 illegal 05/10 15:59
ric2k1:memory access, 比方說你的 array index 太大寫到別人的 05/10 15:59
ric2k1:後院去了, 或者是你試著去 access/write 一個已經被 freed 05/10 16:01
ric2k1:的 pointer variable. 總而言之, 就是一些 illegal 的 mem 05/10 16:02
ric2k1:access 造成一些不屬於你的 code 的部分的記憶體被 05/10 16:02
ric2k1:corrupted 掉了... 怎麼 debug? 不容易, 可以試試 05/10 16:03
ric2k1:"comment out" 大法, 把一些 code comment out 掉, 試著找 05/10 16:04
ric2k1:到哪一段 code 在作怪先... 05/10 16:05
muxiv: 都會發生, 那就可能是 http://yaxiv.com 07/12 00:16