在omnetpp中使用sendirect()后删除消息

时间:2017-02-22 22:31:59

标签: omnet++

在我的项目中,我有以下代码段

if(strcmp(msg->getName(),"failedAck") == 0 || ......)
{
    msg->removeControlInfo();
    msg->setControlInfo(info);
    recvControls++;
    sendDirect(msg, table, "ackIn");
}

本质上,一条消息到达其最终目的地(让我们称之为A *),如果它是一种指定的消息,它将被发送到另一个模块(B *),该模块使用它携带的信息来执行操作

我遇到的问题是,在将消息发送到其他B *之后,我在完成使用后删除了该消息。但是,当我查看检查员时,它仍然是A *的一部分。当我尝试删除A *中的消息时,我收到一条错误消息,指出无法删除该消息,因为它当前已安排。 我无法弄清楚为什么会发生这种情况,这是否意味着sendDirect()不会改变消息的所有权(与手册相反)?

非常感谢这方面的帮助,目前处理模拟中的内存管理问题,这是其中的一部分。

1 个答案:

答案 0 :(得分:0)

我想撤回这个问题,并感谢所有看过它的人。我刚刚发现这些项目应该被删除。然而,我忘记了我正在为其他用途克隆该对象,这就是它出现在检查员中的原因。道歉。