2014-01-13 64 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 

。 我用它找到我的問題的原因,並看到「內存堆棧」。這意味着程序無法訪問內存以獲取受保護的功能!