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