作者ric2k1 (Ric)
看板EE_DSnP
標題Re: [問題] 程式crash了
時間Fri May 2 20:30:38 2008
※ 引述《fairyflame (妖精火燄)》之銘言:
: 經檢查後好像問題出在這: 以下是我的code
: T* popFront() {
: if(_first!=0){
: T* pop=_first;
: _first=getNext(_first);
: return pop;} // TODO
: else return 0;
: 用gdb檢查是說:
: mtest> mtn 7
: Calling alloc...(12)
: Calling MemMgr::getMem...(12)
: Program received signal SIGSEGV, Segmentation fault.
: 0x080528f1 in MemRecycleList<MemTestObj>::popFront (this=0x0) at memMgr.h:111
^^^^^^^^
這個的意思是呼叫 popFront() 的指標物件 (i.e. a MemTestObj*), is a NULL (0).
用 NULL pointer 來呼叫任何 member function 或是 access data member
當然會 crash.
你可以在 gdb 裡用 "up" 來看看到底是誰呼叫這個 function,
為什麼這時的 MemTestObj* is a NULL?
: warning: Source file is more recent than executable.
: 111 if(_first!=0){
: 這部分判斷式拿掉直接return0時確定可以正確執行(功德圓滿)
: 不懂為什麼這樣子程式會crash...連在popFront中cout<<_first也會crash
: 可以請教一下嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.121.134.42
1F:推 fairyflame:感謝教授 原來是getList出了問題!! 05/02 20:53