2014-01-13 61 views
0

我试图拿length of queue in MAC layer into aodv protocol by ns2但是当我记得if queue->length()函数时,得到了"Segmentation Fault"如何获得AODV队列的长度?

我搜索了如何获得MAC层中队列的长度,并得到了它每次返回零值的原因。

不幸的是我没有找到任何正确的答案来解决它! 我下面的步骤:

in AODV::recvHello(Packet *p){ 
.... 
double length; 
length=ifqueue->length(); 
... 
} 

但是当我运行仿真文件无线,在输出了分段故障(核心转储)!

我试着回想一下AODV的每一处,但我得到同样的错误!

可否请您指导我在哪里做错了?

回答

2

我终于解决了。 当Length()函数定义为protected时显示此错误。 所以我把它定义为公共和这个问题解决了:)

但对于解决关于TCL的任何错误,您可以使用下面的命令:运行此命令,您可以看到错误的位置和原因后

valgrid --track-check=yes ns filename.tcl 

。 我用它找到我的问题的原因,并看到“内存堆栈”。这意味着程序无法访问内存以获取受保护的功能!