omn​​et中的导航层次结构错误:模拟以退出代码终止:139

时间:2015-06-08 07:44:00

标签: c++ segmentation-fault omnet++ inet

我正在尝试使用以下代码导航到2级升级模块: -

cModule* parentmod = getParentModule();
cModule* grantParentmod = parentmod->getParentModule();

for (cSubModIterator iter(*grantParentmod); !iter.end();iter++)
    EV<<"Current module is "<< iter()->getFullName() <<endl;

输出结果为: -

Current module is notificationBoard
Current module is mobility
Current module is udpApp[0]
Current module is udpApp[1]
Current module is udp
Current module is networkLayer
Current module is routingTable
Current module is interfaceTable
Current module is wlan[0]

但是当我直接尝试通过以下代码访问udpApp [0]时: -

cModule* parentmod = getParentModule();
cModule* grantParentmod = parentmod->getParentModule();

cModule* udpmod = parentmod->getParentModule()->getSubmodule("udpApp[0]");
EV<<"Current module is "<< udpmod->getFullName() <<endl;

模拟在运行时结束并出现以下错误:模拟以退出代码终止:139 ,这意味着出现分段错误。但是,如果我使用任何其他模块,如'mobility'而不是'udpApp [0]',那么它可以正常工作。

任何人都可以帮我找出解决这种情况的可行方法。

1 个答案:

答案 0 :(得分:1)

您收到此错误是因为您尝试取消引用Null指针。你得到一个Null指针,因为给getSubmodule的模块名称“xyz [123]”不存在。它不存在,因为方括号中的数字不是子模块名称的一部分,而是模块向量中的索引。必须在对getSubmodule的调用中单独指定名称和索引。