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