作者yutsai2003 (阿軒)
看板EE_DSnP
標題[問題] BST compile問題
時間Wed Dec 7 20:57:44 2011
有一個令人匪夷所思的問題 @@
就是我如果在 class BSTree 的destructor裡面寫
~BSTree(){clear(); }
在輸入一些指令後,打 q -f 就會出現 程式區段錯誤 QQ
do file的結果也都是正確的,只有在最後 q -f指令才會出現錯誤 ...
可是如果今天我在 destructor 裡面寫 ~BSTree(){cout<<""<<; clear(); }
就不會有程式區段錯誤了 ... 這到底發生什麼事情 ?? 難道cout真的這麼猛 QQ?
另一個問題是,
我把makefile.in 中的 -g 改成 -O3 ,
compile會過,可是只要輸入adtp的指令就 程式區段錯誤了 ...
這樣看起來是哪邊有錯 ??
我的tree是一開始把_root指到零,然後用_parent的方法來指 ~~
問題有點多 感謝大家 !!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.189
1F:推 anfranion:這看起來可能是有亂指的指標喔 檢查一下吧 12/07 21:22
2F:→ yutsai2003:可是加了cout以後去跑do file 都跟 ref 一樣耶 QQ 12/07 21:26
3F:→ yutsai2003:有點不太懂哪邊出問題了 ... 12/07 21:26
4F:推 timrau:開valgrind檢查一下..... 12/07 21:31
5F:→ yutsai2003:請問一下那個是什麼 @@? 怎麼開 ?? 感謝!! 12/07 21:40
6F:→ yutsai2003:查到那個軟體了 !! 我來試試看 ~ 感謝 !! 12/07 21:43
7F:推 ric2k1:在 adtTestObj 或是 BstNode 的 destructors cout 一些訊息 12/07 22:32
8F:→ ric2k1:看看是誰被 destruct 掉時出問題... 12/07 22:32
9F:→ yutsai2003:可是為什麼我只要在BSTree的destructor加上cout 12/07 23:46
10F:→ yutsai2003:然後什麼都不打 .. 他就正常了 QQ 12/07 23:46
11F:推 ric2k1:我覺得是 memory corruption, 就是有些已經被 delete 掉的 12/08 00:35
12F:→ ric2k1:memory 你還去寫它,或是 access 它之類的 12/08 00:35
13F:→ yutsai2003:發現是在destructor亂做事情害的 XDD 12/08 00:53
14F:→ simpdanny:clear的時候如果_root==0要停止動作不能clear唷QQ" 12/08 00:53
15F:→ yutsai2003:不過現在還有一個奇怪的bug就是我如果改成-O3就會crash 12/08 00:53
16F:→ yutsai2003:用原本-g來compile就完全ok 是compiler對memory做了 12/08 00:54
17F:→ yutsai2003:optimization以後 誤刪記憶體了嘛 @@? 12/08 00:54
18F:→ yutsai2003:感謝樓上 XDD 我就是destructor錯在這 XDD 12/08 00:55