PHP中文网2017-04-17 13:02:30
所以是遇到 SegmentFault 就來 SegmentFault 求助了麼…
新手遇到 segfault 其實很正常,此時可以善於使用 GDB。使用 GDB 跑一下你的程式碼,使用 bt 指令列印一下呼叫堆疊:
#0 0x0000000000400f5a in Term::insertTerm (this=0x0, c=1, e=2) at tmp.cpp:24
#1 0x0000000000400db9 in addPlus (L=@0x7fffffffdf48: 0x603010,
M=@0x7fffffffdf50: 0x6030c0) at tmp.cpp:111
#2 0x0000000000400aa6 in main () at tmp.cpp:42
可以發現,addPlus 函數中初始的 N 是 NULL,而你直接呼叫 N 的方法,就出現了 this 為 NULL 的情況。 deference 一個空指標自然會導致 segfault。
至於怎麼解決,你應該可以自己想明白。